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 ...
随机推荐
- Locust性能测试4-参数关联
前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...
- 第七章之main函数和启动例程
main函数和启动例程 为什么汇编程序的入口是_start,而C程序的入口是main函数呢?本节就来解释这个问题.在讲例 18.1 “最简单的汇编程序”时,我们的汇编和链接步骤是: $ as hell ...
- -webkit-line-clamp超过两行就出现省略号
-webkit-line-clamp 是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中. 限制在一个块元素显示的文本的行数. 为了实现该 ...
- http-equiv="Refresh" 实现定时刷新页面
***.html自动跳转文件代码如下: <HTML> <HEAD><META http-equiv="Refresh" content="5 ...
- Integer类之缓存
在开始详细的说明问题之前,我们先看一段代码 1 public static void compare1(){ 2 Integer i1 = 127, i2 = 127, i3 = 128, i4 = ...
- Spring Security中异常上抛机制及对于转型处理的一些感悟
在使用Spring Security的过程中,我们会发现框架内部按照错误及问题出现的场景,划分出了许许多多的异常,但是在业务调用时一般都会向外抛一个统一的异常出来,为什么要这样做呢,以及对于抛出来的异 ...
- CFA
拜耳色彩滤波阵列(Bayer Color Filter Array, CFA)是非常有名的彩色图片的数字采集格式.由1/2的G,1/4得R,1/4的B组成. 当Image Sensor向外逐行输出数据 ...
- animation效果
添加一个颜色灰渐变的动画效果. <!DOCTYPE html><html lang="en"><head> <meta charset=& ...
- 岭回归(Ridge Regression)
一.一般线性回归遇到的问题 在处理复杂的数据的回归问题时,普通的线性回归会遇到一些问题,主要表现在: 预测精度:这里要处理好这样一对为题,即样本的数量和特征的数量 时,最小二乘回归会有较小的方差 时, ...
- POJ 1182 并查集
Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到 ...