(5)--MongoDB--数据更新

函数

update()

语法

db.集合.update(更新条件,新的对象数据,upsert, multi)
  1. upsert: 如果要更新的数据不存在,则增加一条新的内容(true,增加,false 不增加)
  2. multi: 是否只更新满足条件的第一条记录,设置 false(默认),只更新第一个,true:都更新

更新存在的数据

显示已有集合数据

db.students.find().skip(0).limit(5).sort({"$natural":1}).pretty();

(5)--MongoDB--数据更新_第1张图片
将年龄是19岁的人的成绩都更新为100分
只更新查询的第一条数据

db.students.update({"age":19},{"$set":{"score":100}},false,false);

$set 称为修改器
(5)--MongoDB--数据更新_第2张图片
将年龄是19岁的人的成绩都更新为100分
所有满足条件的数据都更新

db.students.update({"age":19},{"$set":{"score":100}},false,true);

(5)--MongoDB--数据更新_第3张图片

更新不存在的数据

没有年龄为30岁学生的信息,更新操作变成创建

db.students.update({"age":30},{"$set":{"name":"不存在"}},true,false);

查询目前的集合数据
(5)--MongoDB--数据更新_第4张图片
查询集合查看结果
在这里插入图片描述

save()

此函数与 update() 函数相似,但不常用

db.students.save({ "_id" : ObjectId("5def42ea64471b41051ee59d"),"age":50});

在这里插入图片描述

修改器

数据的修改会牵扯到内容的变更,结构的变更(包含数组(列表))

$inc

主要针对一个数字字段,增加某个数据字段的数据内容
语法:

{"$inc":{成员: 内容}}

查询目前的集合数据
(5)--MongoDB--数据更新_第5张图片
将所有年龄为19岁的学生成绩一律减少30分,年龄加1岁
只修改第一条

db.students.update({"age":19},{"$inc":{"score":-30,"age":1}},false,false)

已知的集合数据
(5)--MongoDB--数据更新_第6张图片

$set

进行内容的重新设置

{"$set":{"成员":"新内容"}}

将年龄是20岁的所有人的成绩修改为89,(只改动第一条)

db.students.update({"age":20},{"$set":{"score":89}});

$unset

删除某个成员的内容

{"$unset":{"成员",1}}

已知的集合数据
(5)--MongoDB--数据更新_第7张图片
删除"张三" 的年龄与成绩信息

db.students.update({"name":"李四"},{"$unset":{"age":1,"score":1}});

(5)--MongoDB--数据更新_第8张图片

$push

将内容追加到指定的成员之中(基本上是数组(列表))
该修改器就是进行数组(列表)数据的添加操作

{"$push":{成员:value}}

查询目前的集合数据
(5)--MongoDB--数据更新_第9张图片
向李四中添加课程信息(此时李四信息下没有相应信息)

db.students.update({"name":"李四"},{"$push":{"course":["语文","数学"]}});

(5)--MongoDB--数据更新_第10张图片
此修改器增加的是列表
(5)--MongoDB--数据更新_第11张图片

db.students.update({"name":"王五"},{"$push":{"course":"语文"}});

(5)--MongoDB--数据更新_第12张图片
查询目前的集合数据
(5)--MongoDB--数据更新_第13张图片
添加一门课程

db.students.update({"name":"Wilson","age":19},{"$push":{"course":"美术"}});

(5)--MongoDB--数据更新_第14张图片

$pushAll

与 $push 是类似的,可以一次追加多个内容到数组(列表中)

{"$pushAll":{"成员":数组内容}}

查询目前的集合数据
(5)--MongoDB--数据更新_第15张图片
向"孙七" 中添加多个课程信息

db.students.update({"name":"孙七"},{"$pushAll":{"course":["美术","音乐","素描"]}});

(5)--MongoDB--数据更新_第16张图片

$addToSet

向数组(列表)增加一个内容,只有这个内容不存在的时候才会增加

{"$addToSet":{成员:内容}}

向"孙七"中增加舞蹈课程内容

db.students.update({"name":"孙七"},{"$addToSet":{"course":"舞蹈"}});

(5)--MongoDB--数据更新_第17张图片

$pop

删除数组(列表)中的数据

{"$pop":{成员:内容}}

内容为 -1 表示删除第一个内容
内容为 1 表示删除最后一个内容
删除孙七的第一门课程

db.students.update({"name":"孙七"},{"$pop":{"course":-1}});

(5)--MongoDB--数据更新_第18张图片
删除孙七 最后一门课程

db.students.update({"name":"孙七"},{"$pop":{"course":1}});

(5)--MongoDB--数据更新_第19张图片

$pull

从数组(列表)内删除一个指定内容的数据

{"$pull":{成员:数据}}   #此处数据是进行数据比对的

删除孙七素描课程

db.students.update({"name":"孙七"},{"$pull":{"course":"素描"}});

(5)--MongoDB--数据更新_第20张图片

$pullAll

一次性删除数组(列表)内多个内容

{"$pull":{成员:[数据1,数据2,...]}}

(5)--MongoDB--数据更新_第21张图片

db.students.update({"name":"Wilson"},{"$pullAll":{"course":["语文","数学","英语"]}});

(5)--MongoDB--数据更新_第22张图片

$rename

为成员名称重命名

{"rename":{旧成员名称:新成员名称}}

查询已有集合数据
(5)--MongoDB--数据更新_第23张图片
将 刘九 name 成员名称,修改为 “姓名”

db.students.update({"name":"刘九"},{"$rename":{"name":"姓名"}});

(5)--MongoDB--数据更新_第24张图片

你可能感兴趣的:(MongoDB)