MongoDB Update (Insert a List of Item to an Array)

后端 未结 5 1695
滥情空心
滥情空心 2021-01-02 16:12

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\':          


        
相关标签:
5条回答
  • 2021-01-02 16:27

    the simplest approach is by using a conventional update operation

      db.urColl.update(
        { x: "h" },
        { $push: { arr: { $each: [6,8] } } },
        { multi: true }
      );`
    
    0 讨论(0)
  • 2021-01-02 16:28

    $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.

    0 讨论(0)
  • 2021-01-02 16:39

    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 )
    
    • upsert - if the record(s) do not exist, insert one. Upsert only inserts a single document
    • mutli - indicates if all documents matching criteria should be updated rather than just one
    0 讨论(0)
  • 2021-01-02 16:44

    I think what you are looking for is the $pushAll operator. Take a look here:

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

    0 讨论(0)
  • 2021-01-02 16:47

    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.

    0 讨论(0)
提交回复
热议问题