私のコレクション (「ワーカー」と呼ばれます):
"_id" : "500"
"type" : "Manager",
"employees" : [{
"name" : "bob"
"id" : 101
},{
"name" : "phil"
"id" : 102
}]
目標: type: Manager であり、かつ「id」が 102 のサブドキュメントを含むすべての _id について: 102 を 202 に置き換えます。
望ましい最終結果:
"_id" : "500"
"type" : "Manager",
"employees" : [{
"name" : "bob"
"id" : 101
},{
"name" : "phil"
"id" : 202
}]
私が試してみました:
db.workers.update({type:'Manager','employees.id':'102'},{$set:{'employees.id':'202'}},{multi:true})
次に、確認のために次の 2 つのことを行いました。
db.workers.find({type: "Manager", 'employees.id': 102}).count()
9の結果が得られます。
私も確認するためにこれを試しました:
db.workers.find({$and: [{type: "Manager"},{"employees.id":60}]}).count()
これは 0 を返しました。
この時点でかなり混乱しています。私のアップデートは間違っていますか?私の発見は間違っていますか?両方ですか?「9」の結果は間違っていますか? 「0」は間違っていますか?