mongodb update / append-to嵌套文档

时间:2015-02-19 00:36:15

标签: mongodb

我们说我有这样的文件:

{"bar": "blah", 
 "baz": "boo", 
 "quuz": [{"boo": "hi"},   
          {"boo": "lah"}]}

我们说我有新的数据,如下所示:

{"bar": "blah",
 "baz": "boo",
 "quuz": [{"boo": "whatever"},
          {"boo": "etc"}]}

我想更新数据库中的文档,使其看起来像

{"bar": "blah",
 "baz": "boo",
 "quuz": [{"boo": "hi"},   
          {"boo": "lah"},
          {"boo": "whatever"},
          {"boo": "etc"}]}

我可以在Mongodb中执行此操作,还是应该只下载文档,将其合并到我的应用中,然后使用$set或其他什么?

FWIW:我正在使用Clojure + Monger。

2 个答案:

答案 0 :(得分:1)

应该可以使用$push$each

db.yourCollection.update({
    bar: "blah", 
    baz: "boo"
}, {
    $push: {
        quuz : {$each: [{"boo": "whatever"}, {"boo": "etc"}]}
    }
});

答案 1 :(得分:0)

是的,你可以直接在mongodb中完成。

  1. 通过公共字段找到目标对象 - 在您的情况下,它可以是" bar"或" baz"。
  2. 隔离要更新的属性 - " quuz"(数组)。
  3. 将新数据推送到数组中。
  4. 保存回数据库
  5. 希望这会有所帮助