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. java class遍历属性

    private void iterateClass(Object object) { Field[] fields = object.getClass().getDeclaredFields(); f ...

  2. 5Lambda表达式

    C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作.首先看一下Lambda表达式的基本构成: [函数对象参数](操作符重载函数参数)mutable或exception -&g ...

  3. bind,live,delegate

    .live() 到目前为止,一切似乎很完美.可惜,事实并非如此.因为.live()方法并不完美,它有如下几个主要缺点: $()函数会找到当前页面中的所有td元素并创建jQuery对象,但在确认事件目标 ...

  4. 数据仓库基础(七)Informatica PowerCenter介绍

    本文转载自:http://www.cnblogs.com/evencao/p/3140938.html  Infromatica PowerCenter介绍: 1993年在美国加利福尼亚州成立,一年后 ...

  5. 打造高可靠与高性能的React同构解决方案

    前言 随着React的兴起, 结合Node直出的性能优势和React的组件化,React同构已然成为趋势之一.享受技术福利的同时,直面技术挑战,在复杂场景下,挑战10倍以上极致的性能优化. 什么是同构 ...

  6. JS实现仿腾讯微博无刷新删除微博效果代码

    这里演示JS仿腾讯微博无刷新删除效果,将显示在微博列表里的内容删除,运用AJAX技术,无刷新删除微博的内容,参考性强,希望对初学AJAX的朋友有所帮助. 在线演示地址如下: http://demo.j ...

  7. 全面理解Java内存模型(转)

    转自:http://blog.csdn.net/suifeng3051/article/details/52611310 Java内存模型即Java Memory Model,简称JMM.JMM定义了 ...

  8. [目前最火的前端开发框架]React组件的应用分析

    React组件 一.如何创建React组件 方式一:React.createClass 用 React.createClass 构建组件是 React 最传统.也是兼容最好的方法. const But ...

  9. (七)git分支的操作

    1.git branch——显示分支一览表 2.git checkout -b——创建.切换分支 往feature-A中不断add.commit叫培育分支 git checkout - 切回上一个分支 ...

  10. Idea中Maven仓库配置会自动恢复

    手头有好几个项目,关闭一个项目,打开另一个项目,发现又在重新下载jar包,打开设置一看,maven配置又恢复到了.m2下边.idea配置的maven会自动恢复吗? 答案是否定的,idea的设置有两个, ...