MongoDB 修改器

对文档中的某些字段进行更新

$inc

专门用来增加(或减少)数字的,只能用于整数,长整数或双精度浮点型的值
$inc键的值必须为数字,不能使用字符串,数组或其他非数字的值
如果键不存在,则创建它

1
db.user.update({}, {"$inc":{"age":1}});

$set

用来指定一个字段的值, 字段不存在则创建.

1
db.user.update({},{"$set":{"name":"mike"}})

$set 也可以用于改变键的类型

1
db.user.update({}, {"$set":{"name":["mike","wang"]}})

unset

用于删除一个键

1
db.user.update({},{"$unset":{"age":1}})

数组修改器

$push

如果数组已存在,添加元素到数组末尾,否则创建它

1
db.blog.update({}, {"$push":{"authors":"mike"}})

使用$each 添加多个值

1
db.blog.update({},{"$push":{"authors":{"$each":["mike", "wang"]}}})

限制数组的最大长度 ‘$slice’, 只包含最后加入的限制长度的元素,必须为负整数,
$slice相对于在文档中创建了一个队列

1
2
3
4
5
6
7
8
9
db.blog.update(
{},
{"$push":{
"authors":{
"$each":["mike", "wang"],
"$slice":-5
}
}
})

$sort 对数组中的所有对象进行排序

1
2
3
4
5
6
7
8
9
10
11
db.blog.update(
{},
{"$push":{
"comments":{
"$each":[{"name": "mike", "count": 2},
{"name": "wang", "count": 3}],
"$slice":-5,
"$sort":{"count": -1}
}
}
})

$slice$sort 必须配合 $each 与 $push使用

$addToSet

保证数组中的元素不重复

1
db.user.update({},{"$addToSet":{"name":"mike"}})

$each组合添加多个元素

1
db.user.update({},{"$addToSet":{"name":{"$each":["mike", "wang"]}}})

$pop

从数组中删除元素,此时数组相当于队列或栈,只能从一端删除

1
2
3
4
// 从头部删除
db.user.update({},{"pop":{"name": -1}})
// 从数组末尾删除
db.user.update({},{"pop":{"name": -1}})

$pull

删除所有匹配的文档

1
db.user.update({},{"pull":{"name": "mike"}})

数组操作符必须作用于包含数组值的键

基于位置的数组修改器

数组下标(从0开始)

1
db.blog.update({}, {"set":{"comments.0.name": "mike"})

## 定位操作符 $

1
2
3
4
db.blog.update(
{"comments.name": "mike"},
{"$set": {"comments.$.name": "wang"}
);

定位操作符只更新第一个匹配的元素

upsert

如果没有找到匹配的文档,那么以查询条件和更新文档为基础创建新的文档;找到则正常更新
update的第三个参数表示这是个upsert

1
2
3
4
5
db.user.update(
{"age": 23},
{"$set": {"age": 24}},
true
)

setOnInsert

在创建文档时创建字段并赋值, 在更新的时候不做任何改变

1
2
3
4
5
db.user.update(
{"age": 23},
{"$setOnInsert": {"name": "mike"}},
true
)

更新多个文档, 指定update的第四个参数为 true

findAndModify 返回被更新的文档

1
2
3
4
5
db.user.findAndModify({
"query":{"name":"mikewang"},
"update":{"$set":{"name":"mike"}},
"new":1
})

update 和 remove 有且只有一个, 能与findAndModify 一起使用的字段有:

    • query
      查询文档的条件
    • sort
      排序的条件
    • update
      文档更新
    • remove
      删除文档,布尔类型
    • new
      表示返回更新前还是更新后的文档,布尔类型,默认false, 更新前的文档 
    • fields
      文档中需要返回的字段
    • upsert
      true为upsert, 默认false

转自http://wangming1993.github.io/2015/12/15/mongo-modifier/

mongodb修改器(转)的更多相关文章

  1. mongodb修改器

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

  2. Mongodb更新数组$pull修饰符 (mongodb 修改器($inc/$set/$unset/$push/$pop/upsert))

    mongodb 修改器($inc/$set/$unset/$push/$pop/upsert))   https://www.jb51.net/article/112588.htm http://bl ...

  3. MongoDB修改器的使用1

    为什么要使用修改器?     通常我们只会修改文档的一部分,这时候更新整个文档就显得很麻烦,通常是通过原子性的更新修改器来完成. 1."$set"修改器    "$set ...

  4. MongoDB修改器总结

    1"$set":用来制定一个字段值,若不存在,则创建:    一般用于点加一个字段   db.users.update({name:"joe"},{" ...

  5. mongoDB 修改器()

    -----------------------------------2016-5-26 15:56:57-- source:[1],MongoDB更新操作符

  6. MongoDB修改器的使用2

    1."$inc"的使用 主要用来增加数值,比如网站的访问量,点击量,流量等 db.games.insert({game:"pinball",user:" ...

  7. mongodb的修改器

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

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

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

  9. MongoDB之修改器

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

随机推荐

  1. poj 2240 Arbitrage (最短路径)

    Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13800   Accepted: 5815 Descri ...

  2. easyui中tab页中js脚本无法加载的问题及解决方法

    我发现tab页中<script src="xxx.js">方式加载的脚本没有生效,firebug看请求也没有请求相应的脚本文件. 单独在浏览器中打开tab页中的页面js ...

  3. 滚动数组要来回赋初值呀。。orzzzzzzzzzzzzzzzzzzzzzzzzzz

    2个小时的人参orzzzzzzzzzzzzzzz ……~(-o ̄▽ ̄)-o ...……o-(_△_o-) ~...……~(-o ̄▽ ̄)-o ...……o-(_△_o-) ~... ……~(-o ̄▽ ̄) ...

  4. IPV6地址格式分析

    IPV6地址格式分析 IPv6的地址长度是128位(bit). 将这128位的地址按每16位划分为一个段,将每个段转换成十六进制数字,并用冒号隔开. 例如:2000:0000:0000:0000:00 ...

  5. Bsd内核选项总结

    Bsd内核选项总结 一: 下面这个选项在每个内核中都要有: machine i386 它指明了机器的硬件体系结构.它必须是i386, pc98, sparc64, alpha, ia64, amd64 ...

  6. VMware ESXI 5.5 注册码

    VMware ESXI 5.5 注册码 ESXI 注册码0A42V-8M182-3ZZ88-R21N6-32K5H ESXi Server许可证类型产品: Mware vSphere 5 Enterp ...

  7. [poj] 2074 Line of Sight || 直线相交求交点

    原题 给出一个房子(线段)的端点坐标,和一条路的两端坐标,给出一些障碍物(线段)的两端坐标.问在路上能看到完整房子的最大连续长度是多长. 将障碍物按左端点坐标排序,然后用房子的右端与障碍物的左端连线, ...

  8. POJ 2987 Firing | 最大权闭合团

    一个点带权的图,有一些指向关系,删掉一个点他指向的点也不能留下,问子图最大权值 题解: 这是最大权闭合团问题 闭合团:集合内所有点出边指向的点都在集合内 构图方法 1.S到权值为正的点,容量为权值 2 ...

  9. HDU 4910 HDOJ Problem about GCD BestCoder #3 第四题

    首先 m = 1 时 ans = 0对于 m > 1 的 情况 由于 1 到 m-1 中所有和m互质的数字,在 对m的乘法取模 运算上形成了群 ai = ( 1<=a<m & ...

  10. wordpress对使用的国外主题进行本地汉化

    wordpress有非常多优秀与专业的主题,当然大多数是非中文的 这些主题本身总会有些无法通过wordpress admin后台来配置的在页面上的英文输出 此时你可以去对应的代码去改掉那些输出,不过这 ...