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 修改器)的更多相关文章

  1. [转载]MongoDB的$inc修改器

    MongoDB的$inc修改器相当于编程语言中的 “+=”“$inc”只能用于操作数值类型的数据,包括整数.长整数和双精度浮点数,用于其他类型的数据会导致操作失败. >db.users.find ...

  2. MongoDB之$关键字及$修改器$set $inc $push $pull $pop

    一.查询中常见的  等于   大于  小于  大于等于  小于等于 等于:用':' 大于:用'$gt' 小于:用'$lt' 大于等于:用'$gte' 小于等于:用'$lte' MongoDB的操作就是 ...

  3. MongoDB之修改器

    MongoDB之修改器 $set  简单粗暴  {name: valuel} 直接将key对应的值赋值给value. db.xxoo.insert({}, {set: {key: value}}) / ...

  4. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

  5. mongodb的修改器

    在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以 ...

  6. mongodb修改器

    mongodb修改器 转载自:http://blog.csdn.net/mcpang/article/details/7752736 mongodb修改器(\(inc/\)set/\(unset/\) ...

  7. MongoDB update修改器 目录

    MongoDB update修改器: 针对Fields的$修改器 $inc $set $unset MongoDB update修改器: 针对Arrays的$修改器 $push $pull $pop ...

  8. MongoDB update修改器: 针对Fields的$修改器 $inc $set $unset

    MongoDB update修改器: $inc $set $unset $push $pull $pop 针对Fields的$修改器 $set: { $set: { key: value } } $s ...

  9. MongoDB update修改器: 针对Arrays的$修改器 $push $pull $pop

    针对Arrays的$修改器 $push : { $push: { key: value } } 它是用来对Array (list)数据类型进行 增加 新元素的,相当于我们Python中 list.ap ...

随机推荐

  1. Locust性能测试4-参数关联

    前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...

  2. 第七章之main函数和启动例程

    main函数和启动例程 为什么汇编程序的入口是_start,而C程序的入口是main函数呢?本节就来解释这个问题.在讲例 18.1 “最简单的汇编程序”时,我们的汇编和链接步骤是: $ as hell ...

  3. -webkit-line-clamp超过两行就出现省略号

    -webkit-line-clamp 是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中. 限制在一个块元素显示的文本的行数. 为了实现该 ...

  4. http-equiv="Refresh" 实现定时刷新页面

    ***.html自动跳转文件代码如下: <HTML> <HEAD><META http-equiv="Refresh" content="5 ...

  5. Integer类之缓存

    在开始详细的说明问题之前,我们先看一段代码 1 public static void compare1(){ 2 Integer i1 = 127, i2 = 127, i3 = 128, i4 = ...

  6. Spring Security中异常上抛机制及对于转型处理的一些感悟

    在使用Spring Security的过程中,我们会发现框架内部按照错误及问题出现的场景,划分出了许许多多的异常,但是在业务调用时一般都会向外抛一个统一的异常出来,为什么要这样做呢,以及对于抛出来的异 ...

  7. CFA

    拜耳色彩滤波阵列(Bayer Color Filter Array, CFA)是非常有名的彩色图片的数字采集格式.由1/2的G,1/4得R,1/4的B组成. 当Image Sensor向外逐行输出数据 ...

  8. animation效果

    添加一个颜色灰渐变的动画效果. <!DOCTYPE html><html lang="en"><head> <meta charset=& ...

  9. 岭回归(Ridge Regression)

    一.一般线性回归遇到的问题 在处理复杂的数据的回归问题时,普通的线性回归会遇到一些问题,主要表现在: 预测精度:这里要处理好这样一对为题,即样本的数量和特征的数量 时,最小二乘回归会有较小的方差 时, ...

  10. POJ 1182 并查集

    Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到 ...