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 ...
随机推荐
- [LeetCode] 312. Burst Balloons_hard tag: 区间Dynamic Programming
Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by ...
- Java-单向链表算法
/** * 数据结构之链表(单向链表) * @author Administrator * */ public class LinkNodeTest { public static void main ...
- php PDO遇到的坑
<?php $dbConn = new PDO( "mysql:host=localhost;dbname=adtuu",'root','root', array( // 强 ...
- python 运行脚本报错 from keyword import iskeyword as _iskeyword ImportError: cannot import name iskeyword,说明python环境坏了,得重装,尚不知具体原因,
C:\Python27\Scripts>python task_test.pyTraceback (most recent call last): File "task_test.p ...
- android 接受系统锁屏广播,及高版本发送广播
protected BroadcastReceiver messageReceiver = new BroadcastReceiver() { @Override public void onRece ...
- Unable to load the Wrapper's native library because none of the following files及解决方法
在有几个应用中,在启动的时候发现下列警告: The version of the script (3.5.29) doesn't match the version of this Wrapper ( ...
- 04: Dom
目录: 参考W3school 1.1 获取标签:直接选择器和间接选择器 1.2 操作标签 1.3 DOM其他操作 1.4 DOM绑定事件的三种方法 1.5 DOM可以绑定的事件 1.1 获取标签:直接 ...
- "1130-host ... is not allowed to connect to this MySql server"登录失败
原因: 该用户没有远程连接权限. 解决:授权! mysql>GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' ...
- Linux中tomcat日志按日期自动分割
Linux中tomcat日志分割需要用到cronolog 附上cronolog-1.6.2.tar.gz 1. 安装cronolog tar –zxvf cronolog-1.6.2.tar.gz . ...
- 20145303刘俊谦 Exp7 网络欺诈技术防范
20145303刘俊谦 Exp7 网络欺诈技术防范 1.实验后回答问题 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内的攻击,arp入侵攻击和DNS欺骗攻击 公共wifi点上的攻击. ...