說我有一個數據庫中的以下蒙戈對象:訪問元素
{
"_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」字段。
非常感謝您的回答,它確實適用於我提供的示例,但是我意識到我的示例沒有完全說明我的isse。請參閱編輯的問題。 – exxodus7
我用更新後的示例運行了我的代碼,它仍然有效。請注意,「新的BasicDBObject(」$ elemMatch「,新的BasicDBObject(」id「,」3456「))」是查找數組中匹配所需ID的條目的位。 – Trisha
糟糕,我也很適合我!謝謝! – exxodus7