ドキュメントの2つのサブ配列を1回の更新で更新することは可能ですか(ドキュメントを取得せず、楽観的同時実行性を使用して更新することなく)?
次のドキュメントがあるとしましょう。
{ "_id" : 2,
"arr1" : [
{ "Id" : 10, "Value" : "abc" },
{ "Id" : 20, "Value" : "abc" },
{ "Id" : 30, "Value" : "abc" },
{ "Id" : 40, "Value" : "abc" },
{ "Id" : 50, "Value" : "abc" }
],
"arr2" : [
{ "Id" : 12, "Text" : "abc" },
{ "Id" : 22, "Text" : "abc" },
{ "Id" : 32, "Text" : "abc" },
{ "Id" : 42, "Text" : "abc" },
{ "Id" : 52, "Text" : "abc" }
]
}
これを実行しようとしましたが、正しいサブドキュメントが変更されていないようです。
db.col.update(
{ "_id": 2, arr1: { $elemMatch: { Id: 30 } }, arr2: { $elemMatch: {Id: 42} } },
{ $set: {
"arr1.$.Value": "Changed First",
"arr2.$.Text": "Changed Second"
}
})