MongoDB(课时18 修改器)
3.4.3.2 修改器(原子操作)
对MongoDB数据库而言,数据的修改会牵扯到内容的变更,结构的变更(包含数组),所以在MongoDB在设计的时候就提供有一系列的修改器的应用,那么像之前使用的“$set”就是一种修改器。
1. $inc:主要针对于一个数字字段,增加某个数字字段的数据内容;
语法:{"$inc" : {"成员" : 内容}}
范例:将所有年龄为21岁的学生成绩一律减少30,年龄加1
db.students.update({"age" : 21}, {"$inc" : {"score" : -30, "age" : 1}}) # 默认只改一条数据
db.students.update({"age" : 21}, {"$inc" : {"score" : -30, "age" : 1}}, false, true)
2. $set:进行内容的重新设置
语法:{"$set" : {"成员" : "新内容"}}
范例:将年龄是20岁的人的成绩修改为89
db.students.update({"age" : 20}, {"$set" : {"score" : 89}})
3. $unset:删除某个成员的内容
语法:{"$unset" : {"成员" : 1}}
范例:删除“张三”的年龄与成绩信息
db.students.update({"name" : "张三"}, {"$unset" : {"age" : 1, "score" : 1}})
执行之后指定的成员内容就消失了,相当于修改了表结构,而这次换成了集合结构。
4. $push:相当于将内容追加到指定的成员之中(输出结果为数组形式)
语法:{"$push" : {成员 : value}}
范例:向“李四”添加“美术”课程
db.students.update({"name" : "李四"}, {"$push" : {"course" : "美术"}})
范例:向“张三”添加课程信息(以数组形式添加)
db.students.update({"name" : "张三"}, {"$push" : {"course" : ["语文", "数学"]}})
$push就是进行数组数据的添加操作使用的,如果没数组则进行一个新数组的创建,如果有则进行内容的追加。
5. $pushAll:一次追加多个内容到数组里面
语法:{"$pushAll" : {成员 : 数组内容}}
范例:向“王五”的信息里面添加多个课程内容
db.students.update({"name" : "王五"}, {"$pushAll" : {"course" : ["美术", "音乐", "素描"]}})
6. $addToSet:向数组里增加一个新内容,只有这个内容不存在的时候才会增加
语法:{"$addToSet" : {成员 : 内容}}
范例:向“王五”中增加“跳舞”
db.students.update({"name" : "王五"}, {"$addToSet" : {"course" : "美术"}})
因为美术不是新内容,所以没变化。
db.students.update({"name" : "王五"}, {"$addToSet" : {"course" : "跳舞"}})
db.students.update({"name" : "王五"}, {"$addToSet" : {"course" : ["美术", "音乐", "素描", "跳舞"]}})
7. $pop:删除数组内第一个或最后一个数据
语法:{"$pop" : {成员 : 内容}} # 内容设置为-1表示删除第一个,设置为1表示删除最后一个
范例:删除王五的第一个课程
db.students.update({"name" : "王五"}, {"$pop" : {"course" : -1}})
范例:删除王五的最后一个课程
db.students.update({"name" : "王五"}, {"$pop" : {"course" : 1}})
8. $pull:从数组内删除一个指定内容的数据
语法:{"$pull" : {成员 : 数据}} # 语法中的数据是用来比对的,是此数据则删除,不是则没变化
范例:删除王五的"跳舞"课程
db.students.update({"name" : "王五"}, {"$pull" : {"course" : "跳舞"}})
注意:$pop可一次性增加多个课程,但$pull只能一次性删除一个课程,一次性删除多个课程必须用$pullAll。
9. $pullAll:一次性删除多个内容
语法:{"$pullAll" : {成员 : [数据, 数据, ...]}}
范例:删除"谷大神 - A"中的三门课程
db.students.update({"name" : "谷大神 - A"}, {"$pullAll" : {"course" : ["语文", "英语", "政治"]}})
10. $rename:为成员名称重命名
语法:{"$rename" : {旧的成员名称 : 新的成员名称}}
范例:将“张三”name成员名称修改为“姓名”
db.students.update({"name" : "张三"}, {"$rename" : {"name" : "姓名"}})
MongoDB(课时18 修改器)的更多相关文章
- [转载]MongoDB的$inc修改器
MongoDB的$inc修改器相当于编程语言中的 “+=”“$inc”只能用于操作数值类型的数据,包括整数.长整数和双精度浮点数,用于其他类型的数据会导致操作失败. >db.users.find ...
- MongoDB之$关键字及$修改器$set $inc $push $pull $pop
一.查询中常见的 等于 大于 小于 大于等于 小于等于 等于:用':' 大于:用'$gt' 小于:用'$lt' 大于等于:用'$gte' 小于等于:用'$lte' MongoDB的操作就是 ...
- MongoDB之修改器
MongoDB之修改器 $set 简单粗暴 {name: valuel} 直接将key对应的值赋值给value. db.xxoo.insert({}, {set: {key: value}}) / ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
- mongodb的修改器
在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以 ...
- mongodb修改器
mongodb修改器 转载自:http://blog.csdn.net/mcpang/article/details/7752736 mongodb修改器(\(inc/\)set/\(unset/\) ...
- MongoDB update修改器 目录
MongoDB update修改器: 针对Fields的$修改器 $inc $set $unset MongoDB update修改器: 针对Arrays的$修改器 $push $pull $pop ...
- MongoDB update修改器: 针对Fields的$修改器 $inc $set $unset
MongoDB update修改器: $inc $set $unset $push $pull $pop 针对Fields的$修改器 $set: { $set: { key: value } } $s ...
- MongoDB update修改器: 针对Arrays的$修改器 $push $pull $pop
针对Arrays的$修改器 $push : { $push: { key: value } } 它是用来对Array (list)数据类型进行 增加 新元素的,相当于我们Python中 list.ap ...
随机推荐
- gcc升级
升级到4.8[这个应该是目前最新的啦,不过网上查的话已经到5.2啦,感觉落后一点比较稳,当然还有就是这个版本是新的里面使用最多的]wget http://people.centos.org/tru/d ...
- 将Pytorch模型从CPU转换成GPU
1. 如何进行迁移 对模型和相应的数据进行.cuda()处理.通过这种方式,我们就可以将内存中的数据复制到GPU的显存中去.从而可以通过GPU来进行运算了. 1.1 判定使用GPU 下载了对应的GPU ...
- php 5.0 新字符串
简介:新字符串以“<<<”开始,后边紧跟子字符串标记,之后为字符串内容,最后用标记和分号结束. 说明:"<<<标记"后不要有空格符,否则可能出现 ...
- Linux 使用系统ISO制作yum源
关于linux安装问题,大多数情况下 系统开发完成之后,需要部署到生产机器上,客户提供的机器预装好了操作系统,但是都是内网环境 与外网都是物理隔绝的,那么 在搭建生产环境时需要安装相关软件时,如果自己 ...
- python getmtime() 最近修改文件内容的时间
import time import os def mm(): file_name = '1.txt' file_times_modified = time.localtime(os.path.get ...
- linux常用命令:find 命令之 exec
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command ...
- linux常见命令ps的应用
ps(Process Status)命令是linux中最常见的命令之一,它用来列出当前系统运行中的进程的状态信息.当然了,它只显示命令执行时的进程状态,如果想要动态列出状态信息,可以选择使用top命令 ...
- python之路----包
包 包是一种通过使用‘.模块名’来组织python模块名称空间的方式. 1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警 ...
- 主攻ASP.NET MVC4.0之重生:Asp.Net MVC WebApi OData
1.新建MVC项目,安装OData Install-Package Microsoft.AspNet.WebApi.OData -Version 4.0.0 2.新建WebAPI Controller ...
- SVC(STM32)
这两个都是 system level service,有什么区别呢?…… 手册上说 SVC 这个指令是同步的,而 PendSV 是异步的,请问是什么意思呢?…… 高手路过尽请留言啊