On this page
$set
在本页面
Definition
$set
- $set运算符用指定的值替换字段的值。
$set运算符表达式具有以下形式:
{ $set: { <field1>: <value1>, ... } }
要在嵌入式文档或数组中指定<field>
,请使用dot notation。
Behavior
如果该字段不存在,则$set将添加具有指定值的新字段,前提是该新字段不违反类型约束。如果您为不存在的字段指定了点划线的路径,则$set将根据需要创建嵌入的文档,以实现到该字段的点划线的路径。
如果指定多个字段值对,$set将更新或创建每个字段。
Examples
考虑包含以下文档的集合products
:
{
_id: 100,
sku: "abc123",
quantity: 250,
instock: true,
reorder: false,
details: { model: "14Q2", make: "xyz" },
tags: [ "apparel", "clothing" ],
ratings: [ { by: "ijk", rating: 4 } ]
}
设置顶级字段
对于符合等于100
的准则_id
的文档,以下操作使用$set运算符更新quantity
字段,details
字段和tags
字段的值。
db.products.update(
{ _id: 100 },
{ $set:
{
quantity: 500,
details: { model: "14Q3", make: "xyz" },
tags: [ "coats", "outerwear", "clothing" ]
}
}
)
该操作将值quantity
替换为500
; details
字段表示新的嵌入式文档,而tags
字段表示新的数组。
设置嵌入式文档中的字段
要在嵌入式文档或数组中指定<field>
,请使用dot notation。
对于符合条件_id
等于100
的文档,以下操作将更新details
文档中的make
字段:
db.products.update(
{ _id: 100 },
{ $set: { "details.make": "zzz" } }
)
设置数组中的元素
要在嵌入式文档或数组中指定<field>
,请使用dot notation。
对于符合条件_id
等于100
的文档,以下操作将更新ratings
数组的tags
字段中的第二个元素(1
的数组索引)和ratings
数组的第一个元素(0
的数组索引)中的rating
字段的值。
db.products.update(
{ _id: 100 },
{ $set:
{
"tags.1": "rain gear",
"ratings.0.rating": 2
}
}
)
有关数组的其他更新运算符,请参见数组更新运算符。