设为首页 收藏本站
查看: 1095|回复: 0

[经验分享] mongo简介——update & findAndModify

[复制链接]

尚未签到

发表于 2016-12-2 08:40:42 | 显示全部楼层 |阅读模式
  由于发现mongo更新太快,跟我之前所学有很多差异;尤其是聚合操作,比较早的版本只有group和mapreduce两个函数,不支持avg、max、min、sum这些操作,现在除了增加了这些常用操作以外还提供了更加丰富的聚合功能。
  从这一篇开始将按照这个url里面的内容介绍:http://docs.mongodb.org/manual/reference/operator/。
  撰写博客的顺序按照第二个页面里面的操作符字母顺序,将分别按照增、删、改、查、聚合四个主题更新博客文章。
  在介绍到某个操作关键字时如果相关必要的方法还没有介绍,就插入一篇介绍这个方法的博文。
  比如说第一个要介绍的是$addToSet,这个操作符,但是它只能用于update操作,而update在之前的博文中还没有介绍过,于是这一篇就介绍下update的相关参数。下一篇再介绍$addToSet
  db.COLLECTION_NAME.update({},{},true|false,true|false);
  第一个参数是查询选择器,与findOne的参数一样,相当于sql的where子句
  第二个参数是更新操作文件,由各种更新操作符和更新值构成,
  第三个参数是upsert。如果是true,表示如果没有符合查询选择器的文档,mongo将会综合第一第二个参数向集合插入一个新的文档。
  第四个参数是multi。true:更新匹配到的所有文档,false:更新匹配到的第一个文档,默认值
  第三第四个参数也可以合并成一个:
  db.COLLECTION_NAME.update({},{},{multi:true|false,upsert:true|false});
  拥有类似事务特性的更新与查询操作——findAndModify.
  非常奇怪的是,在上面的链接里面没有找到这个函数的定义。
  它是原子性的,会返回符合查询条件的更新后的文档。
  一次最多只更新一个文档,也就是条件query条件,且执行sort后的第一个文档。
  db.COLLECTION_NAME.findAndModify({query:{},
  update:{},
  remove:true|false,
  new:true|false,
  sort:{},
  fields:{},
  upsert:true|false});
  query是查询选择器,与findOne的查询选择器相同
  update是要更新的值,不能与remove同时出现
  remove表示删除符合query条件的文档,不能与update同时出现
  new为true:返回个性后的文档,false:返回个性前的,默认是false
  sort:排序条件,与sort函数的参数一致。
  fields:投影操作,与find*的第二个参数一致。
  upsert:与update的upsert参数一样。
  不论是update的第二个参数,还是findAndModify的update,在不指定更新操作符的情况下,将会用指定的新值替换旧值。
  比如,
  use iteye;
  db.blog.update({_id:ObjectId('......')},{title:'new title'});
  //上面的操作就把指定_id的文档的标题改成了‘new title’
  如果指定了更新操作符,就可以实现更复杂灵活的更新操作。可以通过更新操作符,增加或减少数值,针对数组类型的属性,做类似队列或栈的操作。单从这一点来说,mongo要比sql数据库强大的多了。
  $addToSet:http://runfriends.iyunv.com/blog/1830751
  $bit:http://runfriends.iyunv.com/blog/1831533

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308431-1-1.html 上篇帖子: Mongo PHP Api 之数据库连接 下篇帖子: Mongo和Couch对比
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表