I want to add several items to arrays of several rows in Mongo. How can I do this?
I want to start with this:
{\'x\': \'h\', arr: [1,2,3] }
{\'x\':
the simplest approach is by using a conventional update operation
db.urColl.update(
{ x: "h" },
{ $push: { arr: { $each: [6,8] } } },
{ multi: true }
);`
$pushAll
Deprecated since version 2.4: Use the $push
operator with $each
instead.
The $pushAll
operator appends the specified values to an array.
The $pushAll
operator has the form:
{ $pushAll: { <field>: [ <value1>, <value2>, ... ] } }
If you specify a single value, $pushAll
will behave as $push
.
If you want to update multiple records, it's important to pass true
as the 4th argument to the update function:
db.test.update( {"name": "x"}, {"$pushAll": {"arr": [1, 2, 3]}}, false, true)
Per the MongoDB shell syntax for update():
db.collection.update( criteria, objNew, upsert, multi )
I think what you are looking for is the $pushAll operator. Take a look here:
http://docs.mongodb.org/manual/reference/operator/pushAll/#pushall
If you have a MongoDB collection named yourCollection
and a record with the name x
, you would update the subarray with something like this:
db.test.update( {"name":"x"}, {"$pushAll" : {arr : [1, 2, 3]}} )
The important keyword here is $pushAll. You can use it to add items to arrays inside of a single record attribute.