以下操作符可用于更新操作,例如 db.collection.updateMany() 和 db.collection.findAndModify()。
语法
按以下形式指定更新操作符:
{ <operator1>: { <field1>: <value1>, ... }, <operator2>: { <field2>: <value2>, ... }, ... }
行为
更新操作符按字典顺序进程具有基于字符串的名称的文档字段。具有数字名称的字段按数字顺序处理。
参考该 $set 命令示例:
{ $set: { "a.2": <new value>, "a.10": <new value>, } }
"a.2" 在 "a.10" 之前处理,因为 2 按数字顺序排在 10 之前。
Array Update Modifiers
数组更新运算符
以下操作符修改大量的内容:
按位更新操作符
以下操作符符对整数值执行按位更新:
名称 | 说明 |
|---|---|
对整数值执行按位 |
字段更新运算符
以下操作符修改文档中的字段:
名称 | 说明 |
|---|---|
将字段的值设置为当前日期,可以是日期或时间戳。 | |
将字段的值按指定量递增。 | |
仅当指定值小于现有字段值时才更新字段。 | |
仅当指定值大于现有字段值时才更新字段。 | |
将字段的值乘以指定量。 | |
重命名字段。 | |
设置文档中字段的值。 | |
如果某一更新操作导致插入文档,则设置字段的值。对修改现有文档的更新操作没有影响。 | |
从文档中删除指定的字段。 |
位置更新操作符
以下操作符充当占位符,用于标识要更新的大量元素:
名称 | 说明 |
|---|---|
充当占位符,用于更新与查询条件匹配的第一个元素。 | |
充当占位符,以更新数组中与查询条件匹配的文档中的所有元素。 | |
充当占位符,以更新与查询条件匹配的文档中所有符合 |
使用聚合管道进行更新。
要创建表达性更新语句,例如基于当前字段值的条件更新或使用其他字段值的单字段更新,可以使用聚合管道执行更新。
有关语法和示例,请参阅使用聚合管道进行更新。