您好我有一份包含一些用户记录的文件。
"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
}
});
}
我错过了什么?
答案 0 :(得分:2)
尝试按如下方式使用请求:
Users.update(
{_id:Meteor.userId(),
'profile.records': {$elemMatch: {
'moduleId': {$eq: moduleId},
'sectionId': {$eq: sectionId},
'classId': {$eq: classId}
}
}
},
{$set: {'profile.records.$.dateOpened': date}});
它使用$ elemMatch运算符来查找符合多个查询条件的数组元素。