更新操作符

在众触,大多数时候是更新x里的数据,可以省略x.不写,但更新y里的内容时y.不能省略。

字段操作符

$set

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

$unset

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

$inc

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

$mul

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

$min

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

$max

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

$rename

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

$copy

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

数组操作符

$push

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

$unshift

添加到数组开头。

$pop

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

$shift

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

$pull

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

$sets

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

* 避免同时更新同一个路径。
例如 { $inc: { "x.年龄": 2 }, "x.年龄": 0 }:后一个操作会覆盖前一个操作。
例如 { $rename: { "x.姓名": "x.昵称" }, "x.姓名": "张三" }:会报
SQL错误:对同一列"x"进行了多次分配
特别要注意的是$unset更新的是它的上一级路径,例如 { $unset: { "x.昵称": "" }, "x.姓名": "张三" } 也会报相同的错误。

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