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 ...
随机推荐
- 一个新人对HTML的理解
首先 HTML里面包含的东西是什么? 在HTML里面 注释的表示方式是 <!--注释内容--> 注释 HTML初始默认包含了两大部分: 一部分是 <head>< ...
- #C++初学记录(深度搜索#递归)
深度搜索 走地图的题目是深度搜索里比较容易理解的题目,更深层次的是全排列和七皇后等经典题目,更加难以理解,代码比较抽象. 题目:红与黑 蒜厂有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖. ...
- 最新版Intellij IDEA插件JRebel 7.0.7官方免费激活
本文转自:http://blog.csdn.net/u012283609/article/details/70213307 开场语 有时候真实比小说更加荒诞,因为虚构是在一定逻辑下进行的,而现实往往毫 ...
- Hive学习之路 (五)DbVisualizer配置连接hive
一.安装DbVisualizer 下载地址http://www.dbvis.com/ 也可以从网上下载破解版程序,此处使用的版本是DbVisualizer 9.1.1 具体的安装步骤可以百度,或是修改 ...
- Jquery 给Js动态新添加的元素 绑定的点击事件
//one $('.class').on("click",function(){ alert('one') }); //相当于$('.class').bind("clic ...
- java service wrapper日志参数设置及优化
一般在容器比如tomcat/weblogic中运行时,我们都是通过log4j控制日志输出的,因为我们现在很多服务端使用java service wrapper(至于为什么使用jsw,原先是比较排斥使用 ...
- QTQuick控件基础(1)
一.Item QtQuick所有的可视项目都继承自Item,它定义了可视化项目所有通用特性(x\y\width\height\anchors等)具体包括 1.作为容器 2.不透明性 没有设置opaci ...
- 20145329 《网络对抗技术》客户端Adobe阅读器渗透攻击
两台虚拟机: kali ip:192.168.96.130 windows xp sp3 ip:192.168.96.133 1.kali下打开显示隐藏文件 2.在kali终端中开启msfconsol ...
- Disruptor学习笔记(一):基本原理和概念
一.Disruptor基本原理 在多线程开发中,我们常常遇到这样一种场景:一些线程接受用户请求,另外一些线程处理这些请求.比如日志处理中的日志输入和告警.这种典型的生产者消费者场景十分常见,而生产者消 ...
- 什么是BFC?
转载自知乎:https://zhuanlan.zhihu.com/p/25321647 一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: ...