配合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. C# Socket 您的主机中的软件中止了一个已建立的连接 An established connection was aborted by the software in your host machine

    http://tieba.baidu.com/p/3223234493 问题: 服务端在接收客户端数据的时候,抛了个异常出来:System.Net.Sockets.SocketException: 您 ...

  2. C# SuperWebSocket服务端学习(二)

    首先需要下载DLL类库  地址详见:http://download.csdn.NET/detail/u011269801/9590935 1,打开VS2012,新建一个控制台应用程序,选择.NET4. ...

  3. hdu 1242(BFS+优先队列)

    Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  4. python Paramiko 模块远程管理主机

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- import paramiko import os, stat import sys import ope ...

  5. Webpack 2.0 的文档

    Webpack 2.0 的文档 https://webpack.js.org/get-started/

  6. NOIP 2015 DAY2

    跳石头 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块 ...

  7. Asp.net跨域配置

    <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro ...

  8. CAS配置(1)SSL证书配置

    一.配置源码 源码配置稍后提供 二.系统环境安装 安装JDK配置,版本>=1.7 环境变量配置(参考): JAVA_HOME=C:\Program Files x86)\Java\jdk1.7. ...

  9. C99新增内容之复合文字(compound literal)

    前言: 最近在复习C,发现了一些新东西,例如:变长数组,复合文字,指针的兼容性等.今天先简单谈一下复合文字. 正文: 假如需要向带有一个int参量的函数传递一个值,您可以传递一个int变量,也可以传递 ...

  10. 2018.10.9 上线发现elasticsearch写入速度超级慢,原来罪魁祸首是阿里云服务的OSS的锅

    问题描述: 按照项目计划,今天上线部署日志系统(收集线上的所有日志,便于问题排查). 运维按照以前的部署过程,部署elasticsearch,部署结束之后,通过x-pack的monitor发现elas ...