MongoDB 的 upsert

MongoDB 的update 方法的三个参数是upsert,这个参数是个布尔类型,默认是false。当它为true的时候,update方法会首先查找与第一个参数匹配的记录,在用第二个参数更新之,如果找不到与第一个参数匹配的的记录,就插入一条(upsert 的名字也很有趣是个混合体:update+insert)

看下面这个例子:

db.post.update({count:100},{"$inc":{count:10}},true);

在找不到count=100这条记录的时候,自动插入一条count=100,然后再加10,最后得到一条 count=110的记录

时间: 2024-10-11 02:47:26

MongoDB 的 upsert的相关文章

谈 API 的撰写 - 总览

背景 之前团队主要的工作就是做一套 REST API.我接手这个工作时发现那些API写的比较业余,没有考虑几个基础的HTTP/1.1 RFC(2616,7232,5988等等)的实现,于是我花了些时间重写,然后写下了那篇文章. 站在今天的角度看,那时我做的系统也有不少问题,很多 API 之外的问题没有考虑: API 的使用文档.当时我的做法是把文档写在公司使用的协作系统 confluence 里,但这样做的最大的问题是:代码和文档分离,不好维护. API 的监控.整个 API 系统没有一个成体系

mongodb中update方法的upsert和multi

mongodb中的update的形式是这样的: db.collectionName.update(query, obj, upsert, multi); 对于upsert(默认为false):如果upsert=true,如果query找到了符合条件的行,则修改这些行,如果没有找到,则追加一行符合query和obj的行.如果upsert为false,找不到时,不追加. 对于multi(默认为false): 如果multi=true,则修改所有符合条件的行,否则只修改第一条符合条件的行.

MongoDB upsert操作并发的原子性

在用C++对MongoDB执行update操作的时候,如果设置了upsert参数为true,则会自动插入不存在的数据.在高并发环境下,会导致数据重复. 解决方法是为查询条件添加unique index, 参考官方文档: http://docs.mongodb.org/manual/core/write-operations-atomicity/ http://docs.mongodb.org/manual/core/index-unique/#index-type-unique 经过高压测试后,

MongoDB之update

Update操作只作用于集合中存在的文档.MongoDB提供了如下方法来更新集合中的文档: db.collection.update() db.collection.updateOne() New in version 3.2 db.collection.updateMany() New in version 3.2 db.collection.replaceOne() New in version 3. 你可以通过指定criteria或者filter来指定你想更新的文档: update函数执行

mongodb命令

mongodb基本命令 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示当前数据库中的集合(类似关系数据库中的表) show users:显示用户 use <db name>:切换当前数据库,这和MS-SQL里面的意思一样 db.help():显示数据库操作命令,里面有很多的命令 db.foo.help():显示集合操作命令,同样有很多的命令,

MongoDB学习笔记(数据操作)

1.  批量插入:     以数组的方式一次插入多个文档可以在单次TCP请求中完成,避免了多次请求中的额外开销.就数据传输量而言,批量插入的数据中仅包含一份消息头,而多次单条插入则会在每次插入数据时封装消息头数据.对于数据导入而言,我们可以使用mongoimport完成. 2.  数据库清除:    > db.users.remove()     以上命令将会清除users集合中的所有数据,但是不会删除集合本身以及关联的索引.数据删除操作是不可恢复的,一旦删除就物理的删除了.对于全集合清除这种c

MongoDB常用命令

成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 1.输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示当前数据库中的集合(类似关系数据库中的表) show users:显示用户 use <db name>:切换当前数据库,这和MS-SQL里面的意思一样 db.help():显示数据库操作命令,里面有很多的命令 db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据

mongodb的基本操作

/usr/local/mongodb/bin/mongo#启动mongodb MongoDB shell version: 2.2.6 connecting to: test show dbs;#查看数据库 imooc 0.203125GB local (empty) use imooc_2#当没有imooc_2数据库时这个命令相当于创建了此数据库 switched to db imooc_2 show tables#查看数据库下的表 system.indexes teacher db.teac

MongoDB基本命令用

成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示当前数据库中的集合(类似关系数据库中的表) show users:显示用户 use <db name>:切换当前数据库,这和MS-SQL里面的意思一样 db.help():显示数据库操作命令,里面有很多的命令 db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下