update()
语法结构是:
db.collection.update( criteria, objNew, upsert, multi )
参数:
criteria - 查询需要更新的项;
objNew - 更新的对象或者 $ operators (例如 $inc) 这样的操作因子
upsert - 是否是 "upsert"; 也就是说如果记录不存在是否插入新的记录
multi - 是否所有满足criteria的在整个文档都更新
注意:在缺省情况下,update()只会更新第一个满足条件的项。如果需要修改所以的满足条件的
项的话,需要使用multi这个标志位。
下面出现的upsert均表示:如果存在就更新,如果不存在就插入。
注意:
1、update方法只更新一条记录
默认情况下update只更新符合查询条件的第一条找到的记录。如果想更新所有符合条件的记录,需要手动添加 multi 这个参数。
2、update方法的更新参数
像下面这个语句
myColl.update( { _id: X }, {name: "Joe", age: 20 });
会把符合条件的原纪录按照{name: "Joe", age: 20 }完整替换,而不是简单的将name设为"Joe",age设为20.
如果只想更改这2个值,而不是替换完整对象,应该写
myColl.update( { _id: X },{$set: {name: "Joe", age: 20 }});
save()
对单个对象进行upsert时,mongo shell中的save()是个简便的方法。
×××××××××××××
// x is some JSON style object
db.mycollection.save(x); // updates if exists; inserts if new
×××××××××××××
upsert的效果如下:
myColl.update( { name: "Joe" }, { name: "Joe", age: 20 }, true );
使用修改操作集(Modifier Operations)
MO对于更新已经存在的项很高效,特别适合进行累加运算。
举个例子:
找到第一个name是Joe的文档,然后将n递增1.
使用传统的方法:
var j=myColl.findOne( { name: "Joe" } );
j.n++;
myColl.save(j);
使用MO方式就可以简写成:
db.people.update( { name:"Joe" }, { $inc: { n : 1 } } );
这种方式简洁,高效,很少的网络数据传输(当然性能更好)。
注意:
大多数的MO操作符是支持多键值对更新的,例如如下操作会使x等于1,y为2:
{ $set : { x : 1 , y : 2 } }
使用MO:
{ $set : { x : 1 }, $inc : { y : 1 } }
下面介绍一下MO操作符:
$inc
{ $inc : { field : value } }
如果fileid在前面的object部分,则按value值递增;反之,则将fieid赋值为value.
$set
{ $set : { field : value } }
将field设置为value,$set 支持所有的数据类型。
$unset
{ $unset : { field : 1} }
删除指定的field.
$push
{ $push : { field : value } }
如果fileld是个数组的话,将value追加到数组中;
如果fileld没有定义,那么就将fileld赋值为数组[value];
如果fileld已经存在但不是数组的话,就会报错!
$pushAll
{ $pushAll : { field : value_array } }
$addToSet
{ $addToSet : { field : value } }
只有当这个value不在这个数组里的时候才会添加valuse到数组中。
主持增加多个值,例如:
{ $addToSet : { a : { $each : [ 3 , 5 , 6 ] } } }
$pop
{ $pop : { field : 1 } }
删除数组中最后一个元素。
同理:
删除数组中第一个元素:
{ $pop : { field : -1 } }
$pull
{ $pull : { field : _value } }
如果field是个数组的话,删除里面出现的所有字段值。
如果fileld存在但不是个数组,就会报错。
{ $pull : { field : {field2: value} } } 删除和field2中匹配的所有元素
{ $pull : { field : {$gt: 3} } }删除数组中大于 3 的所有元素
{ $pull : { field : {$elemMatch: {field2: value }} } } 删除和field2内嵌元素匹配的所有元素
$pullAll
{ $pullAll : { field : value_array } }
$rename
(版本1.7.2以上的支持).
{ $rename : { old_field_name : new_field_name } }
在更新过程中,如果希望在更新大量数据的时候,被更新的文档禁止写入的话,在查询中可以使用
atomic 这个标记,例如:
db.students.update({score: {$gt: 60}, $atomic: true}, {$set: {pass: true}})
分享到:
相关推荐
赠送jar包:mongodb-driver-sync-4.2.3.jar; 赠送原API文档:mongodb-driver-sync-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-sync-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-sync-4.2.3....
赠送jar包:mongodb-driver-core-4.2.3.jar; 赠送原API文档:mongodb-driver-core-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-core-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-core-4.2.3....
赠送jar包:mongodb-driver-sync-4.2.3.jar; 赠送原API文档:mongodb-driver-sync-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-sync-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-sync-4.2.3....
MongoDB Community Server(mongodb-org-server_5.0.4_amd64.deb)适用于适用于Debian10 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是...
与`mongodb-driver-core-3.5.0.jar`一同使用的还有`bson-3.5.0.jar`和`mongodb-driver-3.5.0.jar`。`bson-3.5.0.jar`包含BSON库,它是Binary JSON的缩写,是MongoDB用于数据存储和传输的二进制格式。它提供了将JSON...
MongoDB Community Server(mongodb-org-server-5.0.8-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...
MongoDB异步驱动程序(mongodb-async-driver)是为Java开发者设计的一个库,它允许应用程序以非阻塞的方式与MongoDB服务器进行通信,提高了处理大量并发请求的能力。 在"mongodb-async-driver-2.0.1.jar"这个特定...
MongoDB Community Server(mongodb-org-server-5.0.4-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...
MongoDB Community Server(mongodb-org-shell-5.0.4-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 ...
MongoDB Community Server(mongodb-linux-x86_64-rhel70-5.0.4.tgz)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 ...
mongodb-linux-x86_64-4.0.10.tgz的下载 mongodb-linux-x86_64-4.0.10.tgz的下载 mongodb-linux-x86_64-4.0.10.tgz的下载
1. 初始化MongoDB的数据文件和配置:`/path/to/mongodb-linux-x86_64-rhel70-4.2.5/bin/mongod --dbpath /var/lib/mongodb --smallfiles --oplogSize 80 --port 27017 --bind_ip 127.0.0.1 --initdb` 2. 启动MongoDB...
本文将详细解析"mongodb-linux-x86_64-4.0.8.tgz"这个压缩包文件及其核心内容,帮助读者深入了解MongoDB在Linux平台上的安装与使用。 首先,"mongodb-linux-x86_64-4.0.8.tgz"是一个专为Linux 64位系统设计的...
MongoDB Community Server(mongodb-org-mongos-5.0.4-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...
mongodb-windows-x86_64-7.0.5-signed.msi 数据库构建工具
这个“mongodb-linux-x86_64-rhel62-4.0.0.tgz”文件是专门为基于Red Hat Enterprise Linux 6.2 (RHEL62)的64位Linux系统设计的MongoDB 4.0.0版本的安装包。MongoDB 4.0是一个重要的版本,因为它引入了许多新特性和...
MongoDB window 安装包,mongodb-windows-x86_64-4.4.0-signed.msi,免除下载速度慢的烦恼!
MongoDB Community Server(mongodb-src-r5.0.4.tar.gz)源代码 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非...
mongodb-org-server-8.0.3-amd64.deb