$set | 赋值更新,通常省略不写。 |
$unset | 删除字段,$set的反操作。 |
$inc | increment:增加指定值。 |
$mul | multiply:乘以指定值。 |
$min | 取新旧值的最小值(当新值小于当前字段值时才更新数据)。 |
$max | 取新旧值的最大值(当新值大于当前字段值时才更新数据)。 |
$rename | 重命名。 |
$copy | 复制。 |
$push | 添加到数组末尾。 |
$unshift | 添加到数组开头。 |
$pop | 删除数组的最后一项。 |
$shift | 删除数组的第一项。 |
$pull | 删除符合条件的数组元素。 |
* 这些操作符适用于json字段(x或y),而不适用于普通字段/自定义字段。
* 赋值更新有可能造成版本冲突(覆盖其它用户的更新)。当前端update(id, U)的第一个参数是数组[id, y._v]时,平台会检查传入的版本号y._v是否最新,非最新则拒绝更新并提示【数据已过期】,是最新则正常更新并把版本号+1。非赋值更新无需忧虑,后端更新自行处理。
* 避免同时更新同一个路径。
例如 { $inc: { 年龄: 2 }, 年龄: 0 }:后一个操作会覆盖前一个操作。
例如 { $rename: { 姓名: "x.昵称" }, 姓名: "张三" }:会报SQL错误:对同一列"x"进行了多次分配或multiple assignments to same column "x"。
$unset更新的是上一级路径,例如 { $unset: { 昵称: "" }, 姓名: "张三" } 也会报相同的错误,因为更新的都是x字段。