配合update使用的函数

$set         修改某列的值
$unset 删除某个列
$rename 重命名某个列
$inc 增长某个列
$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段 eg:
db.stu.update({name:'wukong'},{
$set:{name:'dzsf'},
$unset:{spike:1}, // 注意这个1是要删除的意思
$rename:{sex:'gender'},
$inc:{age:16}
});

set

> db.mytest.update({"age":20},{"$set":{"age":25}})
> db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "name" : "jack", "age" : 25 }

inc => Interlocked.Add

> db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "name" : "jack", "age" : 26 }
> db.mytest.update({"age":25},{"$inc":{"age":10}})
> db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "name" : "jack", "age" : 26 }
> db.mytest.update({"age":26},{"$inc":{"age":10}})
> db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "name" : "jack", "age" : 36 }

upsert

如果没有匹配的行,就直接插入该行

db.news.upsert({id:10},{x:10,y:11},{upsert:true});

结合setOnInsert用法,如果找不到id=10的文档,就插入一个修改后的文档,另外,还要加上setOnInsert里面的元素内容

db.news.upsert({id:10},{$set:{x:10,y:11},$setOnInsert:{gender:'male'},{upsert:true}});

push => push array

> db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [ "shanghai" ], "age" : 36, "name" : "jack" }
> db.mytest.update({"name":"jack"},{"$push":{"address":"beijing"}})
> db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [ "shanghai", "beijing" ], "age" : 36, "name" : "jack" }

pop => pop array

> db.mytest.update({"name":"jack"},{"$pop":{"address":"beijing"}})
> db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [ "shanghai" ], "age" : 36, "name" : "jack" }

multi

指的是修改多行(默认情况下,查询表达式命中多行只修改一行,如果想一次修改多行,就要把multi设置为true)

db.news.update({age:21},{$set:{age:22}},{multi:true});

addToSet

【就是数组中不可能存在在重复的字符串或者数字】,【自动去重的功能】

首先我们用 $push 做一个演示,无法有"去重“的功能。

> db.mytest.update({"age":36},{"$push":{"address":"shanghai"}})
> db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [ "shanghai", "shanghai" ], "age" : 36, "name" : "jack" }

addToSet自动排除演示

> db.mytest.update({"age":36},{"$addToSet":{"address":"shanghai"}})
> db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [ "shanghai" ], "age" : 36, "name" : "jack" }

mongodb--update高级用法的更多相关文章

  1. MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

    一.基本操作 . mongod 启动服务端 2. mongo 启动客户端 3. show databses 查看本地磁盘的数据库 4. use 库名 切换到要使用的数据库 5. db 查看当前使用的数 ...

  2. SQL[连载3]sql的一些高级用法

    SQL[连载3]sql的一些高级用法 SQL 高级教程 SQL SELECT TOP SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目. SELECT TOP ...

  3. Python之Requests的高级用法

    # 高级用法 本篇文档涵盖了Requests的一些更加高级的特性. ## 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个Session实例发出的所有请求之间保持cookies. 会话对象 ...

  4. Requests库的文档高级用法

    高级用法 本篇文档涵盖了 Requests 的一些高级特性. 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 url ...

  5. SpringMVC整合Mongodb开发,高级操作

    开发环境: 操作系统:windows xpMongodb:2.0.6依 赖 包:Spring3.2.2 + spring-data-mongodb-1.3.0 + Spring-data-1.5 +  ...

  6. SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法

    create proc insertLog@Title nvarchar(50),@Contents nvarchar(max),@UserId int,@CreateTime datetimeasi ...

  7. django基础之day05,F与Q查询,Q查询的高级用法

    #F与Q查询 #*************************** F 查询 ******************** # F 查询数据库中的其他字段!!! #1.查询库存数大于卖出数的书籍 fr ...

  8. python接口自动化 - Requests-3 高级用法

    高级用法 本篇文档涵盖了 Requests 的一些高级特性. 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 url ...

  9. python requests 高级用法

    高级用法 本篇文档涵盖了 Requests 的一些高级特性. 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 url ...

  10. Python彩蛋、字典、列表高级用法、元类、混入、迭代器、生成器、生成式、git

    一.类与类的关系 关注公众号"轻松学编程"了解更多. is-a 继承 继承是指一个类(称为子类.子接口)继承另外一个类(称为父类.父接口)的功能, 并可以增加它自己的新功能的能力. ...

随机推荐

  1. Android+Jquery Mobile学习系列(7)-保险人信息

    [保险人管理]是这个APP最重要的功能,用于保存保险客户的数据,给后面的功能提供数据支撑. 简单说说[保险人管理]功能:主要就是增.删.改.查四个功能,在新增和修改的时候不仅可以保存保险人的姓名.身份 ...

  2. CALayer(一)

    CALayer CALayer和UIView CALayer和UIView相比--CALayer少了事件处理的功能,所以更加轻量级,性能更好一点,这就说明如果有一些和用户交互的东西是不建议用CALay ...

  3. jquery学习之$(document).ready()

    参考资料: 1.W3School在线教程:http://www.w3school.com.cn/jquery/event_ready.asp 2.某人博客园:http://www.cnblogs.co ...

  4. JSON与List之间的转换

    jsonString转换为list: JSONArray jsonArray=JSONArray.fromObject(result); List<RentCar> books=(List ...

  5. 初次尝试PHP——一个简单的对数据库操作的增删改查例子

    第一次学习PHP,很多人说PHP是最好的语言,学习了一点点,还不敢说这样的话,不过确实蛮好用的. 做了一个简单的对数据库的增删改查的操作,主要是将四种操作写成了独立的函数,之后直接调用函数.以下是代码 ...

  6. 4 Things I Wish I Would Have Known When I Started My Software Development Career【当我最开始从事软件工程师的时候我希望我知道的四件事】

    英文原文:http://simpleprogrammer.com/2013/08/19/software-development-career/ My software development car ...

  7. jqurey事件 ready方法用法

    ready 在文档加载后激活函数 例: <html> <head> <script type="text/javascript" src=" ...

  8. MYSQL 45道练习题

    学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示.用S ...

  9. 三维重建:SLAM的尺度和方法论问题

    百度百科的定义.此文引用了其他博客的一些图像,如有侵权,邮件联系删除. 作为算法的SLAM,被称为同步相机位姿确定和地图构建.作为一个工程的SLAM,有众多的算法. 在计算机视觉中, 三维重建是指根据 ...

  10. OpenCV: 图像连通域检测的递归算法

    序言:清除链接边缘,可以使用数组进行递归运算; 连通域检测的递归算法是定义级别的检测算法,且是无优化和无语义失误的. 同样可用于寻找连通域 void ClearEdge(CvMat* MM,CvPoi ...