データベースに次の mongo オブジェクトがあるとします。
{
"_id" : ObjectId("4f904ebb5bebd4375b759c90"),
"findme" : "someValue",
"array" : [
{
"id" : "1234"
"Y" : "0"
},
{
"id" : "3456"
"Y" : "0"
},
{
"id" : "5678"
"Z" : "0"
}
]
}
Javaで次のドット表記アクセサーを使用して配列の内容を変更できることを知っています...
BasicDBObject change = new BasicDBObject("findme", "someValue");
BasicDBObject setDoc = new BasicDBObject();
setDoc.append("array.0.Y", "0");
setDoc.append("array.1.Y", "0");
setDoc.append("array.2.Z", "0");
BasicDBObject account = new BasicDBObject("$set", setDoc);
coll.update(change, account);
しかし、ID が「3456」であり、「配列」のインデックス 1 にあることがわかっていない場合、「3456」の「Y」の値を変更するにはどうすればよいでしょうか。これらのクエリオブジェクトと更新メソッドの作成内でこれを完全に達成したいと思います...つまり、オブジェクト全体を引き出して「配列」を反復処理してその位置を見つけたくないのです。
ありがとう!
編集:編集されたコードに示すように、複数の配列要素にフィールド「Y」を含めることができます。特定の要素の「Y」フィールドのみを編集したい。