MongoDB 更新操作符
1. 字段更新操作符 (Field Update Operators)
字段更新操作符允许你修改文档中的特定字段,而无需替换整个文档。
| 操作符 | 描述 |
|---|---|
| $currentDate | 将字段的值设置为当前日期,可以是日期(Date)或时间戳(Timestamp)。 |
| $inc | 将字段的值增加指定的数量。 |
| $min | 仅当指定值小于现有字段值时,才更新该字段。 |
| $max | 仅当指定值大于现有字段值时,才更新该字段。 |
| $mul | 将字段的值乘以指定的数量。 |
| $rename | 修改现有字段的名称。 |
| $set | 设置文档中某个字段的值。 |
| $setOnInsert | 如果更新操作导致了文档的插入(upsert),则设置该字段的值。 |
| $unset | 从文档中删除指定的字段。 |
2. 数组更新操作符 (Array Update Operators)
这些操作符专门用于处理文档内部的数组字段。
| 操作符 | 描述 |
|---|---|
| $ | 用作占位符,以更新匹配查询条件的数组中的第一个元素。 |
| $[] | 用作占位符,以更新匹配查询条件的数组中的所有元素。 |
| $[<identifier>] | 用作占位符,为匹配 arrayFilters 条件的元素更新数组。 |
| $addToSet | 仅当数组中不存在该元素时,才向数组添加元素。 |
| $pop | 删除数组的第一项或最后一项。 |
| $pull | 删除所有匹配指定查询条件的数组元素。 |
| $push | 向数组中追加一个元素。 |
| $pullAll | 从数组中删除所有指定的元素。 |
3. 更新修饰符 (Update Modifiers)
修饰符通常与特定的数组更新操作符(如 $push 或 $addToSet)配合使用。
| 修饰符 | 描述 |
|---|---|
| $each | 修改 $push 和 $addToSet 操作符,以便一次性追加多个元素。 |
| $position | 修改 $push 操作符,以指定元素在数组中插入的位置。 |
| $slice | 修改 $push 操作符,用于限制更新后数组的最大长度。 |
| $sort | 修改 $push 操作符,对存储在数组中的元素进行重新排序。 |
4. 位运算更新操作符 (Bitwise Update Operator)
用于对整数字段执行底层的位运算。
| 操作符 | 描述 |
|---|---|
| $bit | 对字段值执行位运算(与 AND、或 OR、异或 XOR)。 |