修改器是为了爱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}})  如匹配条件有多个,只更新第一个

mongodb 学习笔记 2 --- 修改器的更多相关文章

  1. MongoDB学习笔记(2):数据库操作及CURD初步

    MongoDB学习笔记(2):数据库操作及CURD 数据库操作 创建数据库 首先MongoDB中数据库的创建和数据库的切换都是使用命令,USE DATABASE,如果要切换的数据库不存在则会进行创建, ...

  2. MongoDB学习笔记:MongoDB 数据库的命名、设计规范

    MongoDB学习笔记:MongoDB 数据库的命名.设计规范     第一部分,我们先说命名规范. 文档 设计约束 UTF-8 字符 不能包含 \0 字符(空字符),这个字符标识建的结尾 . 和 $ ...

  3. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  4. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  5. PHP操作MongoDB学习笔记

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

  6. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  7. MongoDB学习笔记(五)--复制集 && sharding分片

    主从复制                                                                                       主从节点开启 主节 ...

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

    索引                                                                                             基础索引 ...

  9. MongoDB学习笔记二- Mongoose

    MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...

随机推荐

  1. BZOJ 1015 星球大战(并查集)

    正着不好搞,考虑倒着搞.倒着搞就是一个并查集. # include <cstdio> # include <cstring> # include <cstdlib> ...

  2. vdbench和fio测试磁盘性能的对比总结

    一.安装 1.安装vdbench,首先安装java:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...

  3. axios post提交数据格式不对的问题

    需要格式化一下 this.$http({ method: "post", url: "/chinacountry/index.php/home/Search/index& ...

  4. MySQL数据库引擎MyISAM与InnoDB的区别

    1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件 ...

  5. 【刷题】BZOJ 3527 [Zjoi2014]力

    Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi ...

  6. 牛客网 Wannafly挑战赛27 蓝魔法师

    蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...

  7. POJ3026:Borg Maze (最小生成树)

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18644   Accepted: 5990 题目链接:h ...

  8. [解决] Error Code: 1044. Access denied for user 'root'@'%' to database

    今天在测试集群用的mysql上,遇到个权限的问题: SQLException : SQL state: 42000 com.mysql.jdbc.exceptions.jdbc4.MySQLSynta ...

  9. Itext2.0.8 和freemarker导出pdf

    这个是跟上一篇写的freemarker导出word是一块的.但是关联性不是很大.由于本人技术有限本篇导出也是根据网上大家的做出的demo混合而成.有不足的地方请大家指出.好改正,使以后看到的freem ...

  10. WPF DataGrid ListView 等等 改变 选中行 颜色;以及 不变的原因

    WPF中改变选中行的颜色是很简单的,就是用触发器:比如:以DataGrid为例: DataGrid.RowStyle Style TargetType= DataGridRow SetterPrope ...