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. easyui中的依赖关系

    参考自:http://www.easyui.info/archives/765.html 在使用easyui的过程中发现各个组件直接存在依赖关系,也就是上层的复杂组件依赖于一个或者多个简单组件,复杂组 ...

  2. 【C++ 拾遗】C++'s most vexing parse

    C++'s most vexing parse 是 Scott Meyers 在其名著<Effective STL>中创造的一个术语. Scott 用这个术语来形容 C++ 标准对于 de ...

  3. BZOJ2756 [SCOI2012]奇怪的游戏 【网络流 + 二分】

    题目 Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinker 想知 ...

  4. 禅与园林艺术(garden)

    禅与园林艺术(garden) 上了大学之后,小W和小Z一起报了一门水课,在做作业时遇到了问题. 有一个长度为nn的数列{ai},为一列树木的美观值. 现在有mm次询问,每次给出三个数l,r,p 询问对 ...

  5. hdu6188&&百度之星初赛(B) T5

    度度熊的交易计划 Problem Description 度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生 ...

  6. javascript jquery document.ready window.onload

    网易 博客 下载LOFTER客户端 注册登录  加关注 凡图的编程之路 2012年7月从一个编程新手的点点滴滴 首页 日志 LOFTER 相册 博友 关于我     日志       关于我 Holy ...

  7. ClientScript.RegisterClientScriptBlock 不执行

    ClientScript.RegisterClientScriptBlock 不执行 页面中 form标签必须加入 runat=server

  8. 小Z爱划水(NOIP信(sang)心(bin)赛)From FallDream

    题目: 小Z在机房.他和其它机房同学都面临一个艰难的抉择,那就是 要不要划水? 每个人都有自己的一个意见,有的人想做题,有的人想划水. 当然,每个人只能选择一个事情做.如果一个人做的事情和他想做的不同 ...

  9. Error C1189: #error: Please use the /MD switch for _AFXDLL builds(转)

    原文转自 https://www.cnblogs.com/zwh0214/p/6048360.html 在VS 2013中编译程序时出现错误: 错误提示1: error C1189: #error : ...

  10. v4l2驱动文档之——streaming IO【转】

    转自:http://blog.csdn.net/zoe6553/article/details/17715441 v4l2驱动编写篇第六B--流输入输出 在本系列文章的上一期中,我们讨论了如何通过re ...