多个更新子文档

时间:2012-05-22 08:47:07

标签: mongodb

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

1 个答案:

答案 0 :(得分:8)

这个问题已被问过几次already,但不是,你不能一次性做到这一点。重复答案:

  

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

     

为了防止这种情况发生,请看一下   部分比较和交换   http://www.mongodb.org/display/DOCS/Atomic+Operations

     

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