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

来源:互联网 发布:淘宝助理免费吗 编辑:程序博客网 时间:2024/06/06 08:39

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

# 首先贴出一个每次修改完以后都会使用的语句:查询db.student.find({"name" : "对应的姓名"}).skip(0).limit(5).sort({"$natural" : -1}).pretty()# 修改器# 对于MongoDB数据库而言,数据的修改会牵扯到内容的变更,结构的变更(可能含有数组),所以在MongoDB设计的时候,# 就提出了一系列的修改器的应用,像之前使用的"$set" 就是一种修改器# 一共提供了十种修改器1. $inc : 主要针对于一个数字字段,增加或减少某个数字字段的数据内容|- 语法 {"$inc" : {"成员" : "内容"[, "成员" : "内容"]}}# 范例:将年龄为30岁的学生,成绩一律减少30分,年龄减1db.student.update({"age" : 30},{"$inc" : {"score" : -30, "age" : -1}}, # 年龄减1, 分数减30false,true)2. $set : 进行内容的重新设置|- 语法 {"set" : {"成员" : "新内容"[, "成员" : "新内容"]}}# 范例:将年龄为29岁的人的成绩修改为80分,年龄设置为30db.student.update({"age" : 29},{"$set" : {"score" : 80, "age" : 30}}, # 年龄修改为30, 成绩修改为80false,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数据库中,提供的修改器的支持很到位。


0 0
原创粉丝点击