- Reference >
- Operators >
- Update Operators >
- Array Update Operators >
- $push
$push¶
On this page
Definition¶
-
$push¶ The
$pushoperator appends a specified value to an array.The
$pushoperator has the form:To specify a
<field>in an embedded document or in an array, use dot notation.
Behavior¶
Starting in MongoDB 5.0, update operators process document fields with string-based names in lexicographic order. Fields with numeric names are processed in numeric order. See Update Operators Behavior for details.
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 Multiple Values to an Array. For a list of modifiers available for
$push, see Modifiers.
Starting in MongoDB 5.0, mongod no longer raises an
error when you use an update operator like $push
with an empty operand expression ( { } ). An empty update results
in no changes and no oplog entry is created (meaning that the
operation is a no-op).
Modifiers¶
You can use the $push operator with the following modifiers:
| Modifier | Description |
|---|---|
$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:
The processing of the $push operation with modifiers occur
in the following order, regardless of the order in which the modifiers
appear:
- Update array to add elements in the correct position.
- Apply sort, if specified.
- Slice the array, if specified.
- Store the array.
Examples¶
Create the students collection:
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:
Use $push Operator with Multiple Modifiers¶
Add the following document to the students collection:
The following $push operation uses:
- the
$eachmodifier to add multiple documents to thequizzesarray, - the
$sortmodifier to sort all the elements of the modifiedquizzesarray by thescorefield in descending order, and - the
$slicemodifier to keep only the first three sorted elements of thequizzesarray.
After the operation only the three highest scoring quizzes are in the array: