MongoDB更新了不正确的数组元素



您好,我有一个包含一些用户记录的文档。

    "profile":{
     "records":[
              {
                "classId":   "LngdsQfL",
                "moduleId":  "5CDEezDJ",
                "sectionId": "nFMu3mwa",
                "dateFinished": "",
                "dateOpened": "2017-11-15T19:48:20.819Z"
              },
              {
                "classId":   "7Smq5sG",
                "moduleId":  "5CDEezDJ",
                "sectionId": "nFMu3mwa",
                "dateFinished": "",
                "dateOpened": "2017-11-15T19:19:08.669Z"
              }
            ]
      }

但是当我尝试更新第二条记录时,查询会更新第一条记录。第二个保持不变。

 var classId= "7Smq5sG";
 var moduleId = "5CDEezDJ";
 var sectionId = "nFMu3mwa";
 var date = new Date();
Users.update(
              { _id:Meteor.userId() ,
                'profile.records.classId' : classId,
                'profile.records.moduleId' : moduleId,
                'profile.records.sectionId' :  sectionId,
              },{
              $set : { 
                "profile.records.$.dateOpened": date
                }
             });
    }

我错过了什么?

尝试按如下方式使用请求:

Users.update(
  {_id:Meteor.userId(),
   'profile.records': {$elemMatch: {
                                     'moduleId': {$eq: moduleId},
                                     'sectionId': {$eq: sectionId},
                                     'classId': {$eq: classId}
                                   }
                      }
  },
  {$set: {'profile.records.$.dateOpened': date}});

它使用运算符$elemMatch查找与多个查询条件匹配的数组元素。

最新更新