MongoDB数据库更新操作的十种修改器的使用

提示:下面代码中所操作的集合都已经插入到数据库中了,只是对MongoDB十种修改器的基本介绍

# 首先贴出一个每次修改完以后都会使用的语句:查询
db.student.find(
	{"name" : "对应的姓名"}
).skip(0).limit(5).sort(
	{"$natural" : -1}
).pretty()
# 修改器
# 对于MongoDB数据库而言,数据的修改会牵扯到内容的变更,结构的变更(可能含有数组),所以在MongoDB设计的时候,
# 就提出了一系列的修改器的应用,像之前使用的"$set" 就是一种修改器
# 一共提供了十种修改器

1. $inc : 主要针对于一个数字字段,增加或减少某个数字字段的数据内容
	|- 语法 {"$inc" : {"成员" : "内容"[, "成员" : "内容"]}}
# 范例:将年龄为30岁的学生,成绩一律减少30分,年龄减1
db.student.update(
	{"age" : 30},
	{"$inc" : {"score" : -30, "age" : -1}}, # 年龄减1, 分数减30
	false,
	true
)

2. $set : 进行内容的重新设置
	|- 语法 {"set" : {"成员" : "新内容"[, "成员" : "新内容"]}}
# 范例:将年龄为29岁的人的成绩修改为80分,年龄设置为30
db.student.update(
	{"age" : 29},
	{"$set" : {"score" : 80, "age" : 30}}, # 年龄修改为30, 成绩修改为80
	false,
	true
)

3. #unset : 删除某个成员的内容
	|- 语法 {"$unset" : {"成员" : 1[,"成员" : 1]}}
范例:删除张三的年龄和分数字段
db.student.update(
	{"name" : "张三"},
	{"$unset" : {"age" : 1, "score" : 1}}, # 执行之后这两个字段就被删除了
	true,
	false
)

4. $push : 相当于将内容追加到指定的成员之中(基本上是数组);
	|- 语法 {"$push" : {"成员" : "内容"}}
范例:给张三添加课程信息,添加数组形式(注意观察这个例子的结果)
db.student.update(
	{"name" : "张三"},
	{"$push" : {"course" : ["语文", "数学"]}}, # 执行之后追加了一个课程字段,会重新创建一个数组,把这个数组放在重新创建的数组中
	true,
	false
)
# 范例:给李四添加课程信息,非数组
db.student.update(
	{"name" : "李四"},
	{"$push" : {"course" : "数学"}}, # 创建一个数组,把数据放在数组中
	true,
	false
)
# 范例:向 王大拿 - E 中添加美术课程
db.student.update(
	{"name" : "王大拿 - E"},
	{"$push" : {"course" : "美术"}}, # 由于有course 字段,所以在尾部追加内容
	true, 
	false
)
# 通过观察上面的几组数据可以发现:$push 就是进行数组的添加操作使用的,如果没有数组则进行一个新的数组的创建,
# 如果有数组,则在数组里面追加

5. $pushAll : 与 "$push" 类似,可以一次追加多个内容到数组中
	|- 语法 {"$pushAll" : {"成员" : ["内容1", "内容2"]}}
范例:向王五的信息中添加多个课程内容
db.student.update(
	{"name" : "王五"},
	{"$pushAll" : {"course" : ["美术", "音乐", "素描"]}}, 
	true,
	false
)

6. $addToSet : 向数组里面增加新的内容,只有当这个内容不存在的时候才会增加
	|- 语法 {"$addToSet" : {"成员" : "内容"}}
范例:向王五的课程信息中添加一个美术课,美术课此时已经存在
db.student.update(
	{"name" : "王五"},
	{"$addToSet" : {"course" : "美术"}}, # 向该数组中添加一个已经存在的字段,没有变化
	true,
	false
)
范例:向王五的课程信息中添加一个不存在的课程字段
db.student.update(
	{"name" : "王五"},
	{"$addToSet" : {"course" : "街舞"}}, # 再次查找的时候多了一个街舞课程
	true,
	false
)
# 通过观察上面的两种情况可以发现:此时会判断要增加的内容在数组里面是否已经存在了,如果不存在在向数组中追加内容
# 如果存在了,则不做任何的修改操作

7. $pop : 删除数组内的数据
	|- 语法 {"$pop" : {"成员" : 内容}} # 内容如果设置为-1,删除第一个;设置为1的话,删除最后一个
范例:删除王五的第一个课程
db.student.update(
	{"name" : "王五"},
	{"$pop" : {"course" : -1}},
	true,
	false
)

8. $pull : 从数组内删除指定内容的数据
	|- 语法 {"$pull" : {"成语" : "数据"}} # 数据是用来进行数据比对的,如果是此数据,则删除;如果不是,不进行任何操作
范例:删除王五的音乐课程(此时王五并没有选择音乐这门课),执行完以后可以发现并没有进行修改
db.student.update(
	{"name" : "王五"},
	{"$pull" : {"course" : "音乐"}},
	true,
	false
)
# 删除王五的街舞课程(观察结果可以发现成功删除)
db.student.update(
	{"name" : "王五"},
	{"$pull" : {"course" : "街舞"}},
	true,
	false
)

9. $pullAll : 一次性删除多个内容 
	|- 语法 {"成员" : ["数据1", "数据2", ...]}
范例:删除 王大拿 - A 中的三门课程
db.student.update(
	{"name" : "王大拿 - A"},
	{"$pullAll" : {"course" : ["语文", "政治", "历史"]}},
	true,
	false
)

10. $rename : 为成员名称重命名
	|- 语法 {"$rename" : {"旧的成员名称" : "新的成员名称"}}
范例:将张三的 "name" 修改为 "姓名"
db.student.update(
	{"name" : "张三"},
	{"$rename" : {"name" : "姓名"}},
	true,
	false
)

# 总结:在MongoDB数据库中,提供的修改器的支持很到位。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值