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. 【转】 Oracle 用户权限管理方法

    sys;//系统管理员,拥有最高权限 system;//本地管理员,次高权限 scott;//普通用户,密码默认为tiger,默认未解锁 sys;//系统管理员,拥有最高权限 system;//本地管 ...

  2. 2:3 Action的配置

    < 一 作用> 一:封装工作单元(相当于是控制层,封装出modelAndView) 二:定义name属性接受前台传过来的数据,再定义message属性,用于存放返回前台页面展示的数 据,实 ...

  3. FRM-92095: Oracle Jnitiator version too low – please install version 1.1.8.2 or higher

    打开EBS,系统报:FRM-92095: Oracle JInitiator 版本太旧. 请安装版本1.1.8.2或更高版本 (英文的错误信息是:FRM-92095: Oracle JInitiato ...

  4. webstorm的个性化设置settings

    如何更改主题(字体&配色):File -> settings -> Editor -> colors&fonts -> scheme name.主题下载地址 如 ...

  5. cocoapods 配置

    二.CocoaPods 安装 CocoaPods可以方便地通过Mac自带的RubyGems安装. 打开Terminal(Mac电脑自带的终端): (1).设置ruby的软件源 这是因为ruby的软件源 ...

  6. 彻底明白Flink系统学习5:window、Linux本地安装Flink

    http://www.aboutyun.com/thread-26393-1-1.html 问题导读 1.如何在window下安装Flink? 2.Flink本地安装启动命令与原先版本有什么区别? 3 ...

  7. 机器学习、深度学习以及人工智能正在快速演进(ML、DL、AI)

    机器学习.深度学习以及人工智能正在快速演进 机器学习.深度学习和人工智能(ML.DL和AI)是彼此相关的概念,他们正在改变不知多少行业,改变其自身管理模式,同时改变做出决策的方式.显然,ML.DL和A ...

  8. centos 安装sftp服务

    打开命令终端窗口,按以下步骤操作. 0.查看openssh的版本 ssh -V 使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级.  1.创建sftp组 ...

  9. 2018年星际争霸AI挑战赛–三星与FB获冠亚军,中科院自动化所夺得季军

    雷锋网 AI 科技评论消息,2018 年 11 月 13-17 日,AAAI 人工智能与交互式数字娱乐大会 (AI for Interactive Digital Entertainment) 在阿尔 ...

  10. awk之match函数

    功能:match函数是用于个性化定制搜索模式. 例子: 文件内容: this is wang ,not wan that is chen, not che this is chen ,and wang ...