-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
set.txt
127 lines (94 loc) · 2.92 KB
/
set.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
====
$set
====
.. default-domain:: mongodb
.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: singlecol
Definition
----------
.. update:: $set
The :update:`$set` operator replaces the value of a field with the
specified value.
The :update:`$set` operator expression has the following form:
.. code-block:: javascript
{ $set: { <field1>: <value1>, ... } }
.. include:: /includes/use-dot-notation.rst
Behavior
--------
If the field does not exist, :update:`$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,
:update:`$set` will create the embedded documents *as needed* to
fulfill the dotted path to the field.
If you specify multiple field-value pairs, :update:`$set` will update
or create each field.
Examples
--------
Consider a collection ``products`` with the following document:
.. code-block:: javascript
{
_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 :update:`$set` operator to update the
value of the ``quantity`` field, ``details`` field, and the ``tags``
field.
.. code-block:: javascript
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. include:: /includes/use-dot-notation.rst
For the document matching the criteria ``_id`` equal to ``100``, the
following operation updates the ``make`` field in the ``details``
document:
.. code-block:: javascript
db.products.update(
{ _id: 100 },
{ $set: { "details.make": "zzz" } }
)
Set Elements in Arrays
~~~~~~~~~~~~~~~~~~~~~~
.. include:: /includes/use-dot-notation.rst
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.
.. code-block:: javascript
db.products.update(
{ _id: 100 },
{ $set:
{
"tags.1": "rain gear",
"ratings.0.rating": 2
}
}
)
For additional update operators for arrays, see
:doc:`/reference/operator/update-array`.
.. seealso:: :method:`db.collection.update()`,
:method:`db.collection.findAndModify()`