MongoDB小结10 - update【upsert】
upsert是一个选项,它是update的第三个参数,并不是一个方法。它是一种特殊的更新,要是没有文档符合匹配,那么它就会根据条件和更新文档为基础,创建新的文档,如有匹配,则正常更新。咱们之前见到的所有update操作,都是建立在有文档的基础之上的。upsert非常方便,不必预制集合,同一套代码既可以创建又可以更新。
超市需要修改商品的价格,比如将苹果的价格上调0.5元,但是店主不确定自己是否有购进苹果(偶尔会犯糊涂),那么他可以这样
db.supermarket.update({"name":"apple"},{$set:{"price":5.5}},true)
如果MongoDB之前有苹果的记录,那么就会update苹果的价格,如果没有就会创建新的文档
{ "_id" : ObjectId("55083db0720f2a27156f66ed"), "name" : "apple", "price" : 5.5 }
MongoDB小结10 - update【upsert】的更多相关文章
- MongoDB小结09 - update【定位修改器】
如果要操作数组中的值,可以用值在数组中的位置当做参数来删除 db.user.update({"name":"codingwhy.com"},{"$se ...
- MongoDB小结12 - update【多文档更新】
当一次更新一个文档无法满足我们的脚步时,我们可以选择一次更新多个文档,及在update的第四个参数的位置添上true,及做多文档更新,建议就算不做多文档更新也显式的在第四个参数上置false,这样明确 ...
- MongoDB小结11 - update【save】
save是一个shell函数,调用它,可以在文档不存在时插入,存在时更新,它只有一个参数:文档.如果文档有 _id 这个 键,那么save会调用upsert,否则会调用insert,非常方便.
- MongoDB小结07 - update【$addToSet & $each】
用$addToSet更新可以避免重复,将它与$each组合起来,可以一次性添加多条(就算后添加的值已存在也没有关系) db.user.update({"name":"co ...
- MongoDB小结06 - update【$push】
数组修改器,既然名字都这样叫了,那么这个修改器就只能对数组进行操作啦. db.user.update({"name":"qianjiahao"},{" ...
- MongoDB小结05 - update【$set & $unset】
用$set指定一个键的值,如果不存在,就创建它.这对更新模式或者增加用户定义很有帮助. db.user.insert({"name":"codingwhy.com&quo ...
- MongoDB小结04 - update【$inc】
update方法很强大,它有两个参数,一是查询文档,用来找出需要更新的文档,另一个是修改器(modifier)文档,描述对找到的文档做哪些修改. 亮点 更新操作是原子的,若两个更新同时发生,先到达服务 ...
- MongoDB小结08 - update【$pull】
它可以删除所匹配的值,如果[1,1,2,1] 执行pull 1 后,只剩下[2]
- MongoDB小结07 - update【$pop】
如果将数组看做队列,可以用$pop方法删除第一个或者最后一个元素 {$pop:{"key":-1}},{$pop:{"key":1}}
随机推荐
- 面试题9-用两个栈来实现一个队列,完成队列的Push和Pop操作
题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 一个栈压入元素,而另一个栈作为缓冲,将栈1的元素出栈后压入栈2中 代码 import java.ut ...
- log级别
trace<debug<info<warn<error<fatal trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没 ...
- (转)淘淘商城系列——SSM框架整合之Service层整合
http://blog.csdn.net/yerenyuan_pku/article/details/72721108 上文我们一起学习了Dao层的整合,本文将教大家如何整合Service层. 我们需 ...
- Laravel Passport认证-多表、多字段解决方案
Laravel Passport认证-多表.多字段解决方案 2018年08月19日 09:31:01 醉卧码场君莫笑 阅读数:1632 1. 概述 API 通常使用令牌(token)进行认证并且在 ...
- 5-Java-C(位平方和)
题目描述: 把一个整数的每个数位都平方后求和,又得到一个整数,我们称这个整数为:位平方和. 对新得到的整数仍然可以继续这一运算过程. 比如,给定整数为4,则一系列的运算结果为: 16,37,58,89 ...
- 小b和矩阵
2486 小b和矩阵 2 秒 262,144 KB 5 分 1 级题 小b有一个m行n列的矩阵. 她会从(1,1)开始,顺时针螺旋访问该矩阵,每个元素恰好被访问一次. 请你按小b的访问顺序输出每个 ...
- Matrix (二分套二分
Given a N × N matrix A, whose element in the i-th row and j-th column Aij is an number that equals i ...
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表 数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...
- layui timeline使用
使用layui timeline过程记录: layui官网时间线介绍比较少,可能是太简单了,这里把时间线通过请求后台数据.再自动填写到对应区块,进行了封装: 代码如下: function timeli ...
- Oracle数据库单表循环提取输出
现在有如下的表,名称为Test表: ydid sws_dm sws_mc ry_dm ry_mc 1 1 ...