- 浏览: 4249687 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
masuweng:
...
kaptcha验证码组件使用简介 -
caobingyi:
你好,问下html是怎么调用loginCheck方法的?
kaptcha验证码组件使用简介 -
hayoouch:
XieFuQ 写道既然都考虑到乐观锁了,是否可以直接换表存储引 ...
mysql乐观锁总结和实践 -
murdonson:
辛苦了
mysql悲观锁总结和实践 -
iamnotstar:
写得不错,感谢分享
memcached-session-manager配置
一、Mongodb数据更新命令
Mongodb更新有两个命令:update、save。
1.1update命令
update命令格式:
db.collection.update(criteria,objNew,upsert,multi)
参数说明:
criteria:查询条件
objNew:update对象和一些更新操作符
upsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。
multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。
示例:
> db.classes.insert({"name":"c1","count":30}) > db.classes.insert({"name":"c2","count":30}) > db.classes.find() { "_id" : ObjectId("5030f3a3721e16c4ab180cd9"), "name" : "c1", "count" : 30 } { "_id" : ObjectId("5030f3ab721e16c4ab180cda"), "name" : "c2", "count" : 30 } >
示例1:把count大于20的class name修改为c3
> db.classes.update({"count":{$gt:20}},{$set:{"name":"c3"}}) > db.classes.find() { "_id" : ObjectId("5030f3a3721e16c4ab180cd9"), "name" : "c3", "count" : 30 } { "_id" : ObjectId("5030f3ab721e16c4ab180cda"), "name" : "c2", "count" : 30 } >
由于没有指定upsert和multi的值,所以全部默认为false,由结果可以看出,只修改了第一条符合条件的记录。
示例2:把count大于20的class name修改为c4,设置multi为true
> db.classes.update({"count":{$gt:20}},{$set:{"name":"c4"}},false,true) > db.classes.find() { "_id" : ObjectId("5030f3a3721e16c4ab180cd9"), "name" : "c4", "count" : 30 } { "_id" : ObjectId("5030f3ab721e16c4ab180cda"), "name" : "c4", "count" : 30 } >
由于指定了multi为true,所以对两条符合条件的记录都进行了更新。
示例3: 把count大于50的class name修改为c5,设置upsert为true
> db.classes.update({"count":{$gt:50}},{$set:{"name":"c5"}},true,false) > db.classes.find() { "_id" : ObjectId("5030f3a3721e16c4ab180cd9"), "name" : "c4", "count" : 30 } { "_id" : ObjectId("5030f3ab721e16c4ab180cda"), "name" : "c4", "count" : 30 } { "_id" : ObjectId("5030f589ce8fa8884e6cd441"), "name" : "c5" } >
在集合中没有count大于50的记录,但是由于指定了upsert为true,如果找不到则会插入一条新记录。
1.2save命令
Mongodb另一个更新命令是save,格式如下:
db.collection.save(obj)
obj代表需要更新的对象,如果集合内部已经存在一个和obj相同的"_id"的记录,Mongodb会把obj对象替换集合内已存在的记录,如果不存在,则会插入obj对象。
这条命令比较简单,示例就省略了。
二、数据更新操作符
1.$inc
用法:{$inc:{field:value}}
作用:对一个数字字段的某个field增加value
示例:将name为chenzhou的学生的age增加5
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 22 } #查询结果显示年龄为22 > db.students.update({name:"chenzhou"},{$inc:{age:5}}) #执行修改,把age增加5 > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 27 } > #查询结果显示年龄为27,修改成功
2.$set
用法:{$set:{field:value}}
作用:把文档中某个字段field的值设为value
示例: 把chenzhou的年龄设为23岁
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 27 } > db.students.update({name:"chenzhou"},{$set:{age:23}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 23 } >
从结果可以看到,更新后年龄从27变成了23
3.$unset
用法:{$unset:{field:1}}
作用:删除某个字段field
示例: 将chenzhou的年龄字段删除
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 23 } > db.students.update({name:"chenzhou"},{$unset:{age:1}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou" } >
4.$push
用法:{$push:{field:value}}
作用:把value追加到field里。注:field只能是数组类型,如果field不存在,会自动插入一个数组类型
示例:给chenzhou添加别名"michael"
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou" } > db.students.update({name:"chenzhou"},{$push:{"ailas":"Michael"}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael" ], "name" : "chenzhou" } >
由结果可以看到,记录中追加了一个数组类型字段alias,且字段有一个为"Michael"的值
5.pushAll
用法:{$pushAll:{field:value_array}}
作用:用法同$push一样,只是$pushAll可以一次追加多个值到一个数组字段内。
示例:给chenzhou追加别名A1,A2
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael" ], "name" : "chenzhou" } > db.students.update({name:"chenzhou"},{$pushAll:{"ailas":["A1","A2"]}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2" ], "name" : "chenzhou" } >
6.$addToSet
用法:{$addToSet:{field:value}}
作用:加一个值到数组内,而且只有当这个值在数组中不存在时才增加。
示例:往chenzhou的别名字段里添加两个别名A3、A4
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2" ], "name" : "chenzhou" } > db.students.update({name:"chenzhou"},{$addToSet:{"ailas":["A3","A4"]}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" } >
由结果可以看出,更新后ailas字段里多了一个对象,这个对象里包含2个数据,分别是A3、A4
7.$pop
用法:删除数组内第一个值:{$pop:{field:-1}}、删除数组内最后一个值:{$pop:{field:1}}
作用:用于删除数组内的一个值
示例: 删除chenzhou记录中alias字段中第一个别名
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "Michael", "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" } > db.students.update({name:"chenzhou"},{$pop:{"ailas":-1}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" } >
由结果可以看书,第一个别名Michael已经被删除了。
我们再使用命令删除最后一个别名:
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2", [ "A3", "A4" ] ], "name" : "chenzhou" } > db.students.update({name:"chenzhou"},{$pop:{"ailas":1}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2" ], "name" : "chenzhou" } >
由结果可以看出,alias字段中最后一个别名["A3","A4"]被删除了。
8.$pull
用法:{$pull:{field:_value}}
作用:从数组field内删除一个等于_value的值
示例:删除chenzhou记录中的别名A1
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2" ], "name" : "chenzhou" } > db.students.update({name:"chenzhou"},{$pull:{"ailas":"A1"}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A2" ], "name" : "chenzhou" } >
9.$pullAll
用法:{$pullAll:value_array}
作用:用法同$pull一样,可以一次性删除数组内的多个值。
示例: 删除chenzhou记录内的所有别名
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ "A1", "A2" ], "name" : "chenzhou" } > db.students.update({name:"chenzhou"},{$pullAll:{"ailas":["A1","A2"]}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ ], "name" : "chenzhou" } >
可以看到A1和A2已经全部被删除了
10.$rename
用法:{$rename:{old_field_name:new_field_name}}
作用:对字段进行重命名
示例:把chenzhou记录的name字段重命名为sname
> db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ ], "name" : "chenzhou" } > db.students.update({name:"chenzhou"},{$rename:{"name":"sname"}}) > db.students.find() { "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "ailas" : [ ], "sname" : "chenzhou" } >
由结果可以看出name字段已经被更新为sname了。
发表评论
-
Mongodb Sharding Cluster搭建
2012-08-23 01:46 0Sharding架构介绍 Sharding是一种将海量数据 ... -
Mongodb性能监控
2012-08-22 00:42 118371.mongosniff工具 首先了解一下sniffer的 ... -
Mongodb高级管理命令
2012-08-21 01:24 37861.克隆collection 命令格式: >d ... -
Mongodb数据导出工具mongoexport和导入工具mongoimport介绍
2012-08-21 00:35 186802一、导出工具mongoexport Mongodb中的mon ... -
Mongodb MapReduce编程模型
2012-08-20 00:55 10873Mongodb官网对MapReduce介绍: Map/red ... -
Mongodb存储过程
2012-08-19 20:36 19407Mongodb支持存储过程的使用,存储过程可以接收和输出参数, ... -
Mongodb联合查询
2012-08-19 19:33 112500在关系型数据库中,通过连接运算符可以实现多个表联合查询。而非关 ... -
Mongodb后台daemon方式启动
2012-08-17 01:03 41526Mongodb可以通过命令行方式和配置文件的方式来启动,具体命 ... -
Mongodb主从复制
2012-08-15 01:04 3176主从复制是Mongodb最常用的复制方式。这种方式非常灵活,可 ... -
通过mongodump和mongorestore实现Mongodb备份和恢复
2012-08-14 01:19 83466Mongodb自带了mongodump和mongorestor ... -
Mongodb常用命令介绍
2012-08-13 01:09 25605查看命令的方式: 1.在shell中运行db.listCom ... -
REST is not enabled. use --rest to turn on.
2012-08-13 00:00 5303使用浏览器访问mongodb管理员接口:http://ipad ... -
Mongodb MapReduce Error:'out' has to be a string or an object
2012-08-12 19:32 4150最近在学习Mongodb,作为入门,选择了《Mongodb权威 ... -
MongoDB数据类型
2012-07-09 00:28 7345参考地址:http://wawlian.iteye.com/ ... -
Mongodb在windows下通过配置文件配置和访问
2012-07-09 00:10 17578Mongodb配置文件配置: 第一步:在“D:\M ... -
Mongodb help命令介绍
2012-07-09 00:00 2786首先切换到Mongodb bi ... -
Mongodb在Linux下的安装和启动和配置
2012-07-09 00:11 97579Mongodb的安装与启动 下载链接: htt ... -
Mongodb在windows下的安装和启动
2012-07-08 23:43 66110Mongodb的安装与启动 下载链接:http: ...
相关推荐
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。 MongoDB 中可以使用的类型如下表所示: 类型 数字 备注 Double 1 String 2 Object 3 Array 4 Binary data 5 ...
MongoDB 管道的介绍及操作符实例 一 介绍 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。 MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是...
定位操作符("$")-神马是定位 定位操作符("$")-未知 FINDANDMODIFY-有神马不同 FINDANDMODIFY-返回已更新的文档 FINDANDMODIFY-实现自增标识 其他 第三天:学会FIND 认识FIND 子键筛选 复杂查询 查询条件操作符 正则...
2.4 MongoDB数据类型 2.4.1 基本数据类型 2.4.2 数字类型 2.4.3 日期类型 2.4.4 数组类型 2.4.5 内嵌文档类型 2.4.6 _id键和ObjectId对象 2.5 MongoDB的下载和安装 2.5.1 MongoDB的下载 ...
2.4 MongoDB数据类型 2.4.1 基本数据类型 2.4.2 数字类型 2.4.3 日期类型 2.4.4 数组类型 2.4.5 内嵌文档类型 2.4.6 _id键和ObjectId对象 2.5 MongoDB的下载和安装 2.5.1 MongoDB的下载 ...
MongoDB是一个基于分布式文件存储的文档数据库,可以说是非关系型(NoSQL,Not Only SQL)数据库中比较像关系型数据库的一个,具有免费、操作简单、面向文档、自动分片、可扩展性强、查询功能强大等特点,对大数据...
介绍强大的更新操作符findAndModify命令。(Mongodb中国学习交流群 二维码)4 | 第 4 章:面向文档的数据第 4 章面向文档的数据本章内容电
5、查询条件操作符 6、条件查询 7、limit、skip 8、排序 一、操作 mongodb 数据库 1、创建数据库 语法:use 数据库名 注意:如果数据库不存在则创建数据库,存在的话切换到指定的数据库 注意:如果创建的...
$type操作符 检测类型 种类 代号 别名 Double 1 “double” String 2 “string” Object 3 “object” Array 4 “array” Binary data 5 “binData” Undefined 6 “undefined” Deprecated. ObjectId 7 “objectId...
打开命令提示符或其他终端,然后导航到您的mongodb安装文件夹(c:program files \ mongo \ server \ 4.4 \ bin) 在命令提示符下,运行“ mongod”,这将启动本地数据库服务器 当MongoD运行时,打开第二个命令提示...
辅助分类 用户体验(UX)卡分类应用程序 设置 1将ux-classify存储库克隆到您选择的文件夹中。... 6通过打开另一个终端/命令提示符/ bash并输入以下命令来启动MongoDB: 蒙哥 用法 您可以在以下位置访
数据流分析服务 任何操作系统都足以满足该应用程序的需求。 该服务已在Windows 10操作系统上构建。 以下是在Windows上运行该应用... 通过在命令提示符下运行pip install -U faust来安装Faust。 安装Mongo DB和Mongo
安装了这些应用程序后,打开应用程序文件夹中的终端或命令提示符(取决于所使用的操作系统)。 然后,依次运行以下命令: npm install npm run start 注意:如果您使用的是Linux或MacOS,则可能需要使用sudo安装...
MongoDB的 [SQL] MySQL SQL 结构化查询语言(SQL) 资料类型 实例操作 声明书 码头工人 绑定挂载和卷 Docker文件 环境文件和选项 权限 港口曝光和发布 吉特 权限 有用的命令 JavaScript 资料类型数组 职能 ...
│ 6_MySQL操作符和常用函数.mp4 │ 7_MySQL常用字符串和日期函数.mp4 │ delete.txt │ MySQL高级DBA大作业1.docx │ 作业.docx │ ├─新版MySQL DBA综合实战班 第04天 │ 1_课后作业讲解.mp4 │ 2_SQL课堂强化...