0

ドキュメントの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"
      }
    })
4

1 に答える 1

1

データが次のようになっている場合は、更新を簡単に実行できるように思われます。

{ 
  "_id" : 2,
  "arr1" : {
    "10": "abc",
    "20": "abc",
    "30": "abc",
    "40": "abc",
    "50": "abc"

  }
}
于 2013-02-14T14:08:08.827 に答える