MongoDB更新(将项列表插入数组)

时间:2012-04-30 12:25:43

标签: arrays mongodb mongodb-query

我想在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] }

5 个答案:

答案 0 :(得分:11)

我认为你要找的是$ pushAll运算符。看看这里:

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

答案 1 :(得分:8)

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

  

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

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

答案 2 :(得分:1)

如果要更新多条记录,将true作为第4个参数传递给更新函数非常重要:

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 - 表示是否应更新所有符合条件的文件,而不仅仅是一个

答案 3 :(得分:1)

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

def xml=new XmlSlurper().parse("http:{serverName}/Jenkins/rssLatest")
def projects = xml.entry.collect{(it.title as String).split("#")[0].trim()}
println projects

答案 4 :(得分:0)

$pushAll
版本2.4之后不推荐使用$push运算符代替$each

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

$pushAll运算符的格式为:

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

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