MongoDB 数据操作(三)数据更新(2)修改器

来源:我的博客站 OceanicKang |《MongoDB 数据操作(三)数据更新(2)修改器》

上一篇:《MongoDB 数据操作(三)数据更新(1)更新函数》

对 MongoDB 数据库而言,数据的修改会牵扯到内容的变更、结构的改变(包含数组)

所以在 MongoDB 设计的时候,就提供有一系列的修改器的应用,如之前的 $set 就是一个修改器

1、$inc:针对数字字段,增加某个数字字段的数据内容

# 将年龄为 19 的成员的成绩全部减30,并且年龄+1
> db.students.update(
      {"age": 19},
      {"$inc": {"score": -30, "age": 1}}
  , false, true);

1.png

2、$set:进行内容的重新设置

# 将年龄为 19 的成员的成绩全部改为 100
> db.students.update(
      {"age": 19},
      {"$set": {"score": 100}}
  , false, true);

3、$unset:删除某个字段的内容

# 删除张三的年龄和成绩
> db.students.update(
      {"name": "张三"},
      {"$unset": {"age": 1, "score": 1}}
  );

2.png

4.1、$push:将内容追加到指定字段之中,数组追加

# 给张三追加一门体育课
> db.students.update(
      {"name": "张三"},
      {"$push": {"course": "体育"}}
  );

3.png

4.2、$push:一次追加多个内容到数组里

# 给张三A追加三门课
> db.students.update(
      {"name": "张三 A"},
      {"$push": 
          {"course": 
              {"$each": ["美术", "音乐", "舞蹈"]}
          }
      }
  );

4.png

5、$addToSet:向数组里面添加一个不存在的内容,存在则不添加

> db.students.update(
      {"name": "张三 A"},
      {"$addToSet": 
          {"course": 
              {"$each": ["美术", "音乐", "舞蹈", "体育"]}
          }
      }
  );

5.png

6、$pop:删除数组内的数据

# 删除张三A的第一门课程
> db.students.update(
      {"name": "张三 A"},
      {"$pop":
          {"course": -1}
      }
  );

6.png

# 删除张三A的最后一门课程
> db.students.update(
      {"name": "张三 A"},
      {"$pop":
          {"course": 1}
      }
  );

7.png

7、$pull:从数组内删除一个指定数据

# 删除张三A的舞蹈课
> db.students.update(
      {"name": "张三 A"},
      {"$pull":
          {"course": "舞蹈"}
      }
  );

8.png

8、$pullAll:从数组内删除多个指定数据

# 删除张三的多个课程
> db.students.update(
      {"name": "张三"},
      {"$pullAll":
          {"course": ["语文", "数学", "英语"]}
      }
  );

9.png

9、$rename:为字段名称重命名

# 将张三的 name 字段改名为 "姓名"
> db.students.update(
      {"name": "张三"},
      {"$rename":
          {"name": "姓名"}
      }
  );

10.png

下一篇:《MongoDB 数据操作(四)数据删除》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值