我想在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] }
答案 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 )
答案 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
。