如果"oid"和"instance"字段匹配,我想对子文档"value"字段执行多次更新.我一次可以做一个子文档,但有多种方法可以做到这一点
- 这适用于一个 -
db.myTable.update({ "data" : { "$elemMatch" : { "oid" : "1.3.6.1.4.1.111.3.10.2.5.35.3",
"instance" : "0" } },
"$atomic" : "true" },
{ $set: { "data.$.value": "change good" }},
false,
true);
"_id" : 483,
"data" : [{
"oid" : "1.3.6.1.4.1.111.3.10.2.5.35.3",
"instance" : "0",
"value" : "0"
}, {
"oid" : "1.3.6.1.4.1.111.3.999.2.5.2",
"instance" : "0",
"value" : "aaa"
}, {
"oid" : "1.3.6.1.4.1.111.3.30.5.1.1",
"instance" : "0",
"value" : "BBB"
}]}
Run Code Online (Sandbox Code Playgroud)
这个问题已经被问了几次已经,但没有,你不能在一个去做到这一点.重复答案:
您必须自己在应用程序代码中执行此操作,方法是查询文档并循环遍历所有嵌套文档; 然后将其保存回MongoDB.
为了防止这种情况发生,请查看http://www.mongodb.org/display/DOCS/Atomic+Operations中的比较和交换部分 .
目前有一个打开的票据,可以将此功能添加到MongoDB.您可能想要对其进行投票:https: //jira.mongodb.org/browse/SERVER-1243
| 归档时间: |
|
| 查看次数: |
4778 次 |
| 最近记录: |