How do i push data into an array in mongodb?

  • Reference >
  • Operators >
  • Update Operators >
  • Array Update Operators >
  • $push

Definition¶

$push

The $push operator appends a specified value to an array.

The $push operator has the form:

{ $push: { <field1>: <value1>, ... } }

To specify a in an embedded document or in an array, use dot notation.

Behavior¶

If the field is absent in the document to update, $push adds the array field with the value as its element.

If the field is not an array, the operation will fail.

If the value is an array, $push appends the whole array as a single element. To add each element of the value separately, use the $each modifier with $push. For an example, see Append a Value to Arrays in Multiple Documents. For a list of modifiers available for $push, see Modifiers.

Modifiers¶

You can use the $push operator with the following modifiers:

ModifierDescription
$each Appends multiple values to the array field.
$slice Limits the number of array elements. Requires the use of the $each modifier.
$sort Orders elements of the array. Requires the use of the $each modifier.
$position Specifies the location in the array at which to insert the new elements. Requires the use of the $each modifier. Without the $position modifier, the $push appends the elements to the end of the array.

When used with modifiers, the $push operator has the form:

{ $push: { <field1>: { <modifier1>: <value1>, ... }, ... } }

The processing of the push operation with modifiers occur in the following order, regardless of the order in which the modifiers appear:

  1. Update array to add elements in the correct position.
  2. Apply sort, if specified.
  3. Slice the array, if specified.
  4. Store the array.

Examples¶

Append a Value to an Array¶

The following example appends 89 to the scores array:

db.students.update(
   { _id: 1 },
   { $push: { scores: 89 } }
)

Append a Value to Arrays in Multiple Documents¶

Add the following documents to the students collection:

db.students.insertMany( [
   { _id: 2, scores: [ 45, 78, 38, 80, 89 ] } ,
   { _id: 3, scores: [ 46, 78, 38, 80, 89 ] } ,
   { _id: 4, scores: [ 47, 78, 38, 80, 89 ] }
] )

The following $push operation appends 95 to the scores array in each document:

db.students.updateMany(
   { },
   { $push: { scores: 95 } }
)

To confirm that each scores array includes 95, run the following operation:

The operation returns the following results:

[
   { _id: 1, scores: [ 44, 78, 38, 80, 89, 95 ] },
   { _id: 2, scores: [ 45, 78, 38, 80, 89, 95 ] },
   { _id: 3, scores: [ 46, 78, 38, 80, 89, 95 ] },
   { _id: 4, scores: [ 47, 78, 38, 80, 89, 95 ] }
]

Append Multiple Values to an Array¶

Use $push with the $each modifier to append multiple values to the array field.

The following example appends each element of [ 90, 92, 85 ] to the scores array for the document where the name field equals joe:

db.students.update(
   { name: "joe" },
   { $push: { scores: { $each: [ 90, 92, 85 ] } } }
)

Use $push Operator with Multiple Modifiers¶

A collection students has the following document:

{
   "_id" : 5,
   "quizzes" : [
      { "wk": 1, "score" : 10 },
      { "wk": 2, "score" : 8 },
      { "wk": 3, "score" : 5 },
      { "wk": 4, "score" : 6 }
   ]
}

The following $push operation uses:

  • the $each modifier to add multiple documents to the quizzes array,
  • the $sort modifier to sort all the elements of the modified quizzes array by the score field in descending order, and
  • the $slice modifier to keep only the first three sorted elements of the quizzes array.

db.students.update(
   { _id: 5 },
   {
     $push: {
       quizzes: {
          $each: [ { wk: 5, score: 8 }, { wk: 6, score: 7 }, { wk: 7, score: 6 } ],
          $sort: { score: -1 },
          $slice: 3
       }
     }
   }
)

The result of the operation is keep only the three highest scoring quizzes:

{
  "_id" : 5,
  "quizzes" : [
     { "wk" : 1, "score" : 10 },
     { "wk" : 2, "score" : 8 },
     { "wk" : 5, "score" : 8 }
  ]
}

How do I push in MongoDB?

The $push operator insert items at the end of the array. If the specified field in the $push operator is not an array, then this operation will fails. If the value of the $push operator is an array, then this operator will append the whole array as a single element.

What MongoDB method would you use to insert an array of data?

MongoDB Array of Objects using insert() with Example The “insert” command can also be used to insert multiple documents into a collection at one time.

How do I update an array in MongoDB?

You can use the updateOne() or updateMany() methods to add, update, or remove array elements based on the specified criteria. It is recommended to use the updateMany() method to update multiple arrays in a collection.

How do arrays work in MongoDB?

Working with Arrays in MongoDB.
Introduction. ... .
Create and Query a Document. ... .
Add an Array Element. ... .
Update an Array Element. ... .
Delete an Array Element. ... .
Add a New Field to all Objects in the Array. ... .
Update a Specific Array Element Based on a Condition. ... .
Conclusion..