8

我想在 Mongo 的多行数组中添加几个项目。我怎样才能做到这一点?

我想从这个开始:

{'x': 'h', arr: [1,2,3] }
{'x': 'h', arr: [1,3] }

并添加数组 [6,8],其中 x 等于 'h':

{'x': 'h', arr: [1,2,3,6,8] }
{'x': 'h', arr: [1,6,8] }
4

5 回答 5

11

我认为您正在寻找的是 $pushAll 运算符。看看这里:

http://docs.mongodb.org/manual/reference/operator/pushAll/#pushall

于 2012-04-30T13:04:03.203 回答
8

如果您有一个名为 MongoDB 的集合yourCollection和一个名为 的记录x,您将使用以下内容更新子数组:

db.test.update( {"name":"x"}, {"$pushAll" : {arr : [1, 2, 3]}} )

这里重要的关键字是$pushAll。您可以使用它将项目添加到单个记录属性内的数组中。

于 2012-05-01T03:54:30.630 回答
2

最简单的方法是使用传统的更新操作

  db.urColl.update(
    { x: "h" },
    { $push: { arr: { $each: [6,8] } } },
    { multi: true }
  );`
于 2017-03-08T21:08:45.130 回答
1

如果你想更新多条记录,重要的是true作为第四个参数传递给更新函数:

db.test.update( {"name": "x"}, {"$pushAll": {"arr": [1, 2, 3]}}, false, true)

根据 update() 的 MongoDB shell 语法:

db.collection.update( criteria, objNew, upsert, multi )
  • upsert - 如果记录不存在,插入一个。Upsert 只插入一个文档
  • mutli - 指示是否应该更新所有符合条件的文档,而不是只更新一个
于 2012-12-14T18:39:41.623 回答
0

$pushAll
2.4 版后已弃用:改用$push操作符$each

运算符将指定的$pushAll值附加到数组中。

运算符具有以下$pushAll形式:

{ $pushAll: { <field>: [ <value1>, <value2>, ... ] } }

如果您指定单个值,$pushAll将表现为$push.

于 2017-06-23T12:10:18.720 回答