`
chakey
  • 浏览: 364378 次
  • 性别: Icon_minigender_1
  • 来自: 水星
社区版块
存档分类
最新评论

【8】MongoDB使用手册--数据更新(Updating)

阅读更多

 

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}})

 

 

 

 

分享到:
评论

相关推荐

    mongodb-driver-sync-4.2.3-API文档-中英对照版.zip

    赠送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-driver-core-4.2.3-API文档-中文版.zip

    赠送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....

    mongodb-driver-sync-4.2.3-API文档-中文版.zip

    赠送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(mongodb-org-server_5.0.4_amd64.deb)

    MongoDB Community Server(mongodb-org-server_5.0.4_amd64.deb)适用于适用于Debian10 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是...

    mongodb-driver-core-3.5.0.jar

    与`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(mongodb-org-server-5.0.8-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-server-5.0.8-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...

    mongodb-async-driver-2.0.1 jar包

    MongoDB异步驱动程序(mongodb-async-driver)是为Java开发者设计的一个库,它允许应用程序以非阻塞的方式与MongoDB服务器进行通信,提高了处理大量并发请求的能力。 在"mongodb-async-driver-2.0.1.jar"这个特定...

    MongoDB(mongodb-org-server-5.0.4-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-server-5.0.4-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...

    MongoDB(mongodb-org-shell-5.0.4-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-shell-5.0.4-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 ...

    MongoDB(mongodb-linux-x86_64-rhel70-5.0.4.tgz)

    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的下载 mongodb-linux-x86_64-4.0.10.tgz的下载

    mongodb-linux-x86_64-rhel70-4.2.5.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-x86_64-4.0.8.tgz"这个压缩包文件及其核心内容,帮助读者深入了解MongoDB在Linux平台上的安装与使用。 首先,"mongodb-linux-x86_64-4.0.8.tgz"是一个专为Linux 64位系统设计的...

    MongoDB(mongodb-org-mongos-5.0.4-1.el7.x86_64.rpm)

    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-windows-x86_64-7.0.5-signed.msi 数据库构建工具

    mongodb-linux-x86_64-rhel62-4.0.0.tgz

    这个“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-windows-x86_64-4.4.0-signed.msi

    MongoDB window 安装包,mongodb-windows-x86_64-4.4.0-signed.msi,免除下载速度慢的烦恼!

    MongoDB(mongodb-src-r5.0.4.tar.gz)

    MongoDB Community Server(mongodb-src-r5.0.4.tar.gz)源代码 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非...

    mongodb-org-server-8.0.3-amd64.deb

    mongodb-org-server-8.0.3-amd64.deb

Global site tag (gtag.js) - Google Analytics