$set

On this page

Definition

  • $set

    • The $set operator replaces the value of a field with the specified value.

The $set operator expression has the following form:

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

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

Behavior

If the field does not exist, $set will add a new field with the specified value, provided that the new field does not violate a type constraint. If you specify a dotted path for a non-existent field, $set will create the embedded documents as needed to fulfill the dotted path to the field.

If you specify multiple field-value pairs, $set will update or 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 , the following operation uses the $set operator to update the value 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 ; the details field to a new embedded document, and the tags field to a new array.

Set Fields in Embedded Documents

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

For the document matching the criteria _id equal to 100 , the following 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, use dot notation.

For the document matching the criteria _id equal to 100 , the following operation updates the value second element (array index of 1 ) in the tags field and the rating field in the first element (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, see Array Update Operators.

SEE ALSO
db.collection.update(), db.collection.findAndModify()

Updated at: 7 months ago
$renameTable of content$setOnInsert