更新操作符

字段操作符

$set

赋值,省略不写。
{ 姓名: "张三", 年龄: 18 } 本是 { $set: { "x.姓名": "张三", "x.年龄": 18 } }
{ x: $f.x } 用表单数据整体替换
x里的内容

$unset

删除字段,$set的反操作。
{ $unset: { 价格: "", 库存: "" } } 删除价格和库存字段

$inc

increment:增加指定值。
{ $inc: { 价格: 1, 库存: -2 } } 价格加1,库存减2

$mul

multiply:乘以指定值。
{ $mul: { 价格: 0.8 } } 价格打8折

$min

取新旧值的最小值(当新值小于当前字段值时才更新数据)。
{ $min: { 价格: 10 } } 如果原价已小于10则不更新,即最贵不超过10元。

$max

取新旧值的最大值(当新值大于当前字段值时才更新数据)。
{ $max: { 价格: 10 } } 如果原价已大于10则不更新,即最便宜也得10元。

$rename

重命名。
{ $rename: { 姓名: "x.昵称" } } 把姓名字段改成昵称

$copy

复制。
{ $copy: { 姓名: "y.昵称" } } 新字段y.昵称将拥有姓名一样的值。

数组操作符

$push

添加到数组末尾。
{ $push: { 标签: "电器" } } :添加一个标签
{ $push: { 标签: ["电器", “食品“] } } :添加多个项目
{ $push: { 成绩: { 科目: "数学", 分数: 95 } } } :添加一门科目的成绩

$unshift

添加到数组开头。

$pop

删除数组的最后一项。
{ $pop: { 成绩: "" } }

$shift

删除数组的第一项。
{ $shift: { 成绩: "" } }

$pull

删除符合条件的数组元素。
{ $pull: { 标签: "电器" } } 移除标签数组中的电器
{ $pull: { 成绩: { 科目: "数学", 分数: { $lt: 60 } } } } 移除不及格的数学成绩

$sets

更新符合条件的对象数组。
{ $sets: { 成绩: [{ 科目: "数学", 分数: { $lt: 60 } }, { 分数: 60 }] } } 把所有不及格的数学成绩统一设为60分

* 避免同时更新同一个路径。
例如 { $inc: { 年龄: 2 }, 年龄: 0 }:后一个操作会覆盖前一个操作。
例如 { $rename: { 姓名: "x.昵称" }, 姓名: "张三" }:会报
SQL错误:对同一列"x"进行了多次分配multiple assignments to same column "x"
$unset更新的是上一级路径,例如 { $unset: { 昵称: "" }, 姓名: "张三" } 也会报相同的错误,因为更新的都是x字段。

由众触低代码平台生成和驱动