$set
Definition
$set
- The
$set
operator replaces the value of a field with thespecified value.
The $set
operator expression has the following form:
- { $set: { <field1>: <value1>, ... } }
To specify a <field>
in an embedded document or in an array, usedot notation.
Behavior
If the field does not exist, $set
will add a new field with thespecified value, provided that the new field does not violate a typeconstraint.If you specify a dotted path for a non-existent field,$set
will create the embedded documents as needed tofulfill the dotted path to the field.
If you specify multiple field-value pairs, $set
will updateor create each field.
Examples
Consider a collection products
with the following document:
- {
- _id: 100,
- sku: "abc123",
- quantity: 250,
- instock: true,
- reorder: false,
- details: { model: "14Q2", make: "xyz" },
- tags: [ "apparel", "clothing" ],
- ratings: [ { by: "ijk", rating: 4 } ]
- }
Set Top-Level Fields
For the document matching the criteria _id
equal to 100
, thefollowing operation uses the $set
operator to update thevalue of the quantity
field, details
field, and the tags
field.
- db.products.update(
- { _id: 100 },
- { $set:
- {
- quantity: 500,
- details: { model: "14Q3", make: "xyz" },
- tags: [ "coats", "outerwear", "clothing" ]
- }
- }
- )
The operation replaces the value of: quantity
to 500
; thedetails
field to a new embedded document, and the tags
field toa new array.
Set Fields in Embedded Documents
To specify a <field>
in an embedded document or in an array, usedot notation.
For the document matching the criteria _id
equal to 100
, thefollowing operation updates the make
field in the details
document:
- db.products.update(
- { _id: 100 },
- { $set: { "details.make": "zzz" } }
- )
Set Elements in Arrays
To specify a <field>
in an embedded document or in an array, usedot notation.
For the document matching the criteria _id
equal to 100
, thefollowing operation updates the value second element (array index of1
) in the tags
field and the rating
field in the firstelement (array index of 0
) of the ratings
array.
- db.products.update(
- { _id: 100 },
- { $set:
- {
- "tags.1": "rain gear",
- "ratings.0.rating": 2
- }
- }
- )
For additional update operators for arrays, seeArray Update Operators.
See also