修改器是为了爱update文档时,不需要传入整个文档就能修改当前文档的某个属性值,修改器用法如下:

假设数据库中foo集合中存在如下文档:{"name":"jack","age":18}

db.foo.update({"name":"jack"},{"$inc":{"age":2}});  //这是一个修改器用法举例

则更新后的文档变为:{"name":"jack","age":20}

下面将介绍如下修改器

1.$set : 用来指定一个字段的值,如果该字段不存在则创建它。修改内嵌文档时支持 {"$set":{"author.name":"jack"}}的写法,即使author字段不存在也可以;

2.$unset: 用来删除一个字段,使用方法如下:db.foo.update({"name":"jack"},{"$unset":{"age":0}})   不管unset的键值对中值为false 还是为0、null,只要写了就会删除;

3.$inc:用来增加/减少已有键值,如果该键不存在就创建一个;只能增加数字值。数字值的字符串也不行。相应的减少传负值就可以了;

4.$push: 用来向数组中push一条数据,如果该数组不存在则创建。

             子操作符: $each 子操作符配合使用,如 {"$push":{"list":{"$each":[1,2,3]}}} , push后的数据为:{"list":[1,2,3]}   如果不用$each,则变为 {"list":[[1,2,3]]} 

                             $slice  限制push数组的长度,负数从后往前数,正数从前往后数,如{"$push":{"list":{"$each":[1,2,3],"$slice":-2}}},数据变为 {"list":[2,3]} 。 如原有数据{"list":[[1,2,3]]} ,此时{"$push":{"list":{"$each":[4,5,6],"$slice":-2}}},变为{"list":[[5,6]]},可见数据的截取范围是根据整体数据数组而言的

                             $sort   根据排序规则进行数组排序,-1 为降序,1为升序

以上的$slice 和 $sort必须和$push $each共同使用 

5.$ne : not equal ,在筛选条件时表示属性值不等于、或不包含该值,可用于update及find  如 db.foo.find({"list":{"$ne":2}})

6.$addToSet: 在向数组中push值时可以避免重复,用法和$push 相同,不过子操作符只能用$each

7.$pop: 从数组中删除一个元素, {"$pop":{"list":1}}  从后往前删除, {"$pop":{"list":-1}} 从前往后删除  无论list后面这个值传的几,都只删除1个

8.$pull: 从数组中删除指定的值 {"$pull":{"list":2}}  如果里面的相同的值有多个,则都删除

9.$:数组下标占位符,使用方法:比如元数据为 {comments:[{name:"jim",votes:0},{name:'mary',votes:1}]}  进行如下更新操作:db.foo.update({"comments.name":"mary"},{"$set":{"commnets.$.votes":3}})  如匹配条件有多个,只更新第一个

转载于:https://www.cnblogs.com/JhoneLee/p/9199372.html

mongodb 学习笔记 2 --- 修改器相关推荐

  1. 非关系型数据库MongoDB学习笔记

    MongoDB学习笔记   --周灿 创建数据库 use "databasename" 查看数据库 show dbs 给指定数据库添加集合和插入记录 db.集合名.insert({ ...

  2. MongoDB学习笔记(一) MongoDB介绍及安装

    系列目录 MongoDB学习笔记(一) MongoDB介绍及安装     MongoDB学习笔记(二) 通过samus驱动实现基本数据操作     MongoDB学习笔记(三) 在MVC模式下通过Jq ...

  3. PHP操作MongoDB学习笔记

    PHP操作MongoDB技術總結 <?php /** * PHP操作MongoDB学习笔记 */ //************************* //**   连接MongoDB数据库  ...

  4. MongoDB学习笔记(四)--索引 性能优化

    索引                                                                                             基础索引 ...

  5. MongoDB 学习笔记八 复制、分片、备份与恢复、监控

    MongoDB 学习笔记八 复制.分片.备份与恢复.监控 MongoDB复制(副本集) 什么是复制? MongoDB 复制原理 MongoDB 副本集设置 副本集添加成员 MongoDB 分片 分片 ...

  6. MongoDB学习笔记~对集合属性的操作

    $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$pop操作 ...

  7. Node.js+mongodb 学习笔记(三)swagger注释+用户管理

    Node.js+mongodb 学习笔记(三)swagger注释+用户管理 Node.js+mongodb 学习笔记(三)swagger注释+用户管理 用户注册 用户登录 修改密码 swagger注释 ...

  8. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

  9. MongoDB学习笔记【2】-- 试用

    大部分内容根据MongoDB官方手册整理:http://docs.mongodb.org/manual/contents/ 查看数据库 [root@slayer ~]# mongo MongoDB s ...

最新文章

  1. React 组件生命周期
  2. linux上最好用的sh --zsh
  3. Python语言编程基础
  4. 百度超级链XChain(5)XuperBridge 智能合约接口
  5. django 国际化 ugettext()
  6. 机器学习 -- 信息论
  7. 给我一个兴趣点,我就能撬动一个行业
  8. merge into ORA-30926
  9. 顺序表的插入与删除java_C++实现顺序表的常用操作(插入删出查找输出)
  10. android里R.layout.的问题
  11. mysql pdo prepare_php pdo prepare真的安全吗
  12. 女人要是一辈子不結婚,老了怎么办?
  13. C语言小于n的素数,关于求N以内素数的一点小问题(N小于一亿)
  14. java基础27 单例集合Collection及其常用方法
  15. JAVA中获取安装路径、运行路径、执行路径的办法
  16. 命名实体识别NER:LSTM-CRF模型
  17. spark大数据技术与应用 实训
  18. 强哥说Java--Java接口
  19. WRSC无人帆船航行基本原理
  20. sql2005如何修改服务器名称,sql2005 服务器名称设置

热门文章

  1. 老司机带你深入浅出 Collection
  2. 使用Qt作窗口截屏(含源码)
  3. 在MSBuild.exe中使用条件编译(Conditional Compile)
  4. ubuntu下vi/vim 的基本使用法
  5. FisherVector编码的来龙去脉
  6. Ubuntu16安装CUDA9.0+Anaconda+Tensorflow1.8GPU(2018.08.20最新)
  7. Python 技术篇-socket套接字实现服务器客户端消息传递实例演示,UDP实现
  8. Windows 技术篇 - 如何查看cpu支持的指令集、型号、属性等详细信息,使用cpu-z工具查看处理器、内存、显卡、主板、缓存、SPD信息方法
  9. c#实现 改进弧长法判断点在多边形里面
  10. Linux minicom 软件退出方法