码迷,mamicode.com
首页 > 数据库 > 详细

mongodb更新文档

时间:2016-06-13 11:36:55      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

先说一个mongodb与程序(php)相关的问题:

  本人在开发的时候,需要根据某条文档的_id来更新对应的文档内容,当我直接使用("57584e289bef19798bd1cab4")类似这样的字符串,直接array("_id"=>"57584e289bef19798bd1cab4"),时,发现更新失败,包括转换成object类型也不行,最后才知道需要使用mongodb里面自带的方法来转换:$id = new MongoId($id),转换后的结果如图:

  技术分享

  只有转换成这样,才能被mongodb识别,然后直接array("_id"=>$id)就可以了;

一、mongodb更新文档(主讲update())

  mongodb更新文档使用的是update()方法,不过还有有一种方法,那就是save(),虽然save()是插入方法,但是它有一个机制就是它在执行插入前会扫描对应集合中的所有文档,看插入的数据是否存在于集合中,如果存在,则调用mongodb的update()方法,进行更新(覆盖),不存在则插入;

  在mongodb中update的语法:

    db.collectionName.update({条件},{需要修改的字段和值},{upsert/multiple})

  mongodb的update()操作重点在于修改器:

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

    技术分享

  $inc 相加直接写数字(reward:5),相减(reward:-5),不存在的field直接创建,注意,必须是数字型,不能是数组或字符串等其他非数字的值

  2. $set : 用来指定修改某个字段的值,其他字段的值不变,避免覆盖掉整条文档,更新的字段不存在则创建

    技术分享

  3. $unset : 删除某个field(unset只认识key:value的形式,所以后面的value是什么无所谓,只要它看到key就会unset掉)

    技术分享

  4.数组修改器

  

  未完待续:http://wangming1993.github.io/2015/12/15/mongo-modifier/

 

 

  

mongodb更新文档

标签:

原文地址:http://www.cnblogs.com/zengguowang/p/5579699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!