除了查询条件,还可以使用修改器对文档进行更新。

1. $inc

> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "name" : "xtt", "age" : 11 }
> db.tianyc03.update({name:'xtt',age:11},{'$inc':{age:5}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "name" : "xtt", "age" : 16 } #$inc还可以添加列。 > db.tianyc04.find()
{ "_id" : ObjectId("510c83ad13d7e50c2281b048"), "wc" : 1 }
> db.tianyc04.update({wc:1},{$inc:{score:50}})
> db.tianyc04.find()
{ "_id" : ObjectId("510c83ad13d7e50c2281b048"), "score" : 50, "wc" : 1 }
> 2. $set 用来指定一个键的值,若该键不存在,则创建。如果需要删除该键,使用$unset。 #新增加列sex
> db.tianyc03.update({name:'xtt',age:16},{$set:{sex:'m'}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "name" : "xtt", "sex" : "m" }
#修改列sex
> db.tianyc03.update({name:'xtt',age:16},{$set:{sex:'male'}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "name" : "xtt", "sex" : "male" }
#改变列sex数据类型
> db.tianyc03.update({name:'xtt',age:16},{$set:{sex:1}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "name" : "xtt", "sex" : 1 }
#删除列sex
> db.tianyc03.update({name:'xtt',age:16},{$unset:{sex:1}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "name" : "xtt" } 3. $push 用来增加数组。若没有改列,则会自动增加。 > db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "name" : "xtt" } > db.tianyc03.update({'name':'xtt'},{$push:{companies:'neu'}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "neu" ], "name" : "xtt" } > db.tianyc03.update({'name':'xtt'},{$push:{companies:'alibaba'}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "neu", "alibaba" ], "name" : "xtt" } 4. $addToSet #push操作不会检查数组中元素是否重复,如果需要将不重复的数据加入数组,需要使用$addToSet > db.tianyc03.update({'name':'xtt'},{$addToSet:{companies:'alibaba'}}) > db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "neu", "alibaba", "alibaba" ], "name" : "xtt" }
> db.tianyc03.update({'name':'xtt'},{$addToSet:{companies:'congxing'}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "neu", "alibaba", "alibaba", "congxing" ], "name" : "xtt" }
> db.tianyc03.update({'name':'xtt'},{$addToSet:{companies:'congxing'}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "neu", "alibaba", "alibaba", "congxing" ], "name" : "xtt" }
> 5. $pop 通过$pop可以从数组中移除数据。此时数据被看成是一个队列。使用{$pop:{key:1}}将从队列末尾移除元素,使用{$pop:{key:-1}}将从队列开头移除元素。 > db.tianyc03.update({'name':'xtt'},{$addToSet:{companies:['c1','c2']}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "neu", "alibaba", "alibaba", "congxing", [ "c1", "c2" ] ], "name" : "xtt" } > db.tianyc03.update({'name':'xtt'},{$pop:{companies:1}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "neu", "alibaba", "alibaba", "congxing" ], "name" : "xtt" }
>
> db.tianyc03.update({'name':'xtt'},{$pop:{companies:-1}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "alibaba", "alibaba", "congxing" ], "name" : "xtt" }
> 6. $pull 除了 $pop,也可以使用 $pull 来删除数组中的元素,此时可以根据元素值进行匹配,将匹配上的元素全部删除。 > db.tianyc03.update({'name':'xtt'},{$addToSet:{companies:'teletek'}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "alibaba", "alibaba", "congxing", "teletek" ], "name" : "xtt" }
> db.tianyc03.update({},{$pull:{companies:'congxing'}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "alibaba", "alibaba", "teletek" ], "name" : "xtt" } > db.tianyc03.update({},{$pull:{companies:'alibaba'}})
> db.tianyc03.find()
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "teletek" ], "name" : "xtt" }
>

  转自:http://www.cnblogs.com/yuechaotian/archive/2013/02/04/2890266.html

mongodb更新操作的更多相关文章

  1. MongoDB——更新操作(Update)c#实现

    c#实现 Mongodb存储[文档局部更新] 如下: 递归更新字段  ,构建UpdateDefinition   /// <summary>   /// 构建更新操作定义   /// &l ...

  2. [转]MongoDB更新操作replaceOne()实例讲解

    最近正在学习MongoDB,作为数据库的学习当然是要从CRUD开始学起了.这篇文章默认读者是知道如何安装MongoDB.如何运行MongoDB实例以及了解了MongoDB中的collection.do ...

  3. mongodb 更新操作

    db.aaaa.update({},{$push:{money:{$each:[8,9,10],$slice:-4}}}) db.aaaa.update({},{$addToSet:{money:{$ ...

  4. MongoDB 文档的更新操作

    在MongoDB中,更新单个doc的操作是原子性的.默认情况下,如果一个update操作更新多个doc,那么对每个doc的更新是原子性的,但是对整个update 操作而言,不是原子性的,可能存在前面的 ...

  5. java操作mongodb——更新数据

    Java中可以通过updateOne,updateMany,replaceOne方法进行集合的文档更新.但是 _id 是不能更新的 updateOne只会更新一条数据,即使通过Filters.lt(& ...

  6. Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作

    2 Mongodb CRUD 操作 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mong ...

  7. [MongoDB]入门操作

    摘要 在工作中也经常使用mongodb,每次遇到新的操作都需要去查,比较麻烦,准备在博客中系统的学习一下mongodb.首先在本地安装mongodb环境,可以下载一个windows的版本. 官网地址 ...

  8. MongoDB常用操作一查询find方法db.collection_name.find()

    来:http://blog.csdn.net/wangli61289/article/details/40623097 https://docs.mongodb.org/manual/referenc ...

  9. mongodb高级操作及在Java企业级开发中的应用

    Java连接mongoDB Java连接MongoDB需要驱动包,个人所用包为mongo-2.10.0.jar.可以在网上下载最新版本. package org.dennisit.mongodb.st ...

随机推荐

  1. bench.sh 跑分测速

    #!/bin/bash #==============================================================# # Description: bench te ...

  2. JavaScript indexOf() 方法 和 lastIndexOf() 方法

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索. 语法: in ...

  3. rsyslog配置报错解决

    配置过程中,查看/var/log/meassage 有报错信息: action '*' treated as ':omusrmsg:*' - please use ':omusrmsg:*' synt ...

  4. java画图之曲线拖动

    目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMot ...

  5. javascript语法速查表

  6. 2016 Web开发资源工具大搜罗

    来源于:https://zhuanlan.zhihu.com/p/22730771 作者:余博伦链接:https://zhuanlan.zhihu.com/p/22730771来源:知乎著作权归作者所 ...

  7. nodejs中exports与module.exports的区别

    转自--http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html 你肯定非常熟悉nodejs模块中的exports对象,你可以用它创 ...

  8. 利用chorme调试手机网页

    太方便了,很实用的技巧(特意记录一下) 1.pc端安装最新的chrome 2.手机端安装最新的chrome ( Android机 ) 3.USB连接线 4.打开电脑的chrome 在地址栏输入 chr ...

  9. Android开发笔记之《JNI常用知识汇总》

    参考资料: Android Studio中NDK开发 : http://www.tuicool.com/articles/NBjQnyAndroid Studio使用新的Gradle构建工具配置NDK ...

  10. wcf第3步之报文分析及原生调用

    最简单的调用当然是服务引用,但是我更想原生调用,所以希望能通过报文有如下研究 1.报文分析 <wsdl:definitions xmlns:wsdl="http://schemas.x ...