5

如果“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"
    }]}
4

1 回答 1

8

这个问题已经被问过几次,但是不,你不能一次完成。重复答案:

您必须自己在应用程序代码中执行此操作,方法是查询文档并遍历所有嵌套文档;然后将其保存回 MongoDB。

为了防止出现这种情况,请查看 http://www.mongodb.org/display/DOCS/Atomic+Operations上的比较和交换部分

目前有一个开放的票证可以将此功能添加到 MongoDB。您可能想要投票: https ://jira.mongodb.org/browse/SERVER-1243

于 2012-05-22T10:29:13.773 回答