我的文档中有以下结构:
{
_id : ObjectId("43jh4j343j4j"),
array : [
{
_arrayId : ObjectId("dsd87dsa9d87s9d7"),
someField : "something",
someField2 : "something2"
},
{
_arrayId : ObjectId("sds9a0d9da0d9sa0"),
someField : "somethingElse",
someField2 : "somethingElse2"
}
]
}
我想更新 someField 和 someField2 但仅针对数组中的一项,即与 _arrayId 匹配的一项(例如 _arrayId : ObjectId("dsd87dsa9d87s9d7")
; 并且仅适用于本文档(例如 _id : ObjectId("43jh4j343j4j")
),没有其他。
arrayIds 不是文档独有的,这就是为什么我需要它用于特定文档的原因。如果我想为数组中存在的每个文档更新该值,我可以使用 $ 位置运算符
,但这不是我想要的。
我正在尝试在 java 中完成此任务但是命令行解决方案也可以。
最佳答案
这是 RameshVel 的解决方案,翻译为 java :
DB db = conn.getDB( "yourDB" );
DBCollection coll = db.getCollection( "yourCollection" );
ObjectId _id = new ObjectId("4e71b07ff391f2b283be2f95");
ObjectId arrayId = new ObjectId("4e639a918dca838d4575979c");
BasicDBObject query = new BasicDBObject();
query.put("_id", _id);
query.put("array._arrayId", arrayId);
BasicDBObject data = new BasicDBObject();
data.put("array.$.someField", "updated");
BasicDBObject command = new BasicDBObject();
command.put("$set", data);
coll.update(query, command);
关于java - 如何更新 MongoDB 中特定文档的数组内特定嵌入文档的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7425993/