0
こんにちは私はいくつかのユーザーレコードを持つ文書を持っています。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"
}
]
}
ただし、2番目のレコードを更新しようとすると、最初のクエリが更新されます。そして2番目のものは同じままです。
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
}
});
}
私は何が欠けていますか?
最初のレコードを更新しているとはどのように分かりますか?あなたの 'Meteor.userId()'は何ですか? –
私はMeteor jsを使用しています。Meteor.userId()は現在のユーザーのIDを返します。データベースをチェックすると、最初のレコードが更新されたことがわかります。 – dionysosz
これはMongoDB v3.6を使用している場合にのみ可能です。これは文字通り数時間以内にリリースされます。 – dnickless