Mongodb学习日志(二):UPDATE及修改器
来源:互联网 发布:豫广网络客服电话 编辑:程序博客网 时间:2024/05/16 17:33
学习内容说明:
- 更新方法参数使用
- 批量更新
- 修改器的种类及使用
- 批量更新数组(无重复值)
1. 更新方法
mongo通过update方法进行文档修改
db.[文档名称].update( {条件},{修改器 : 更新内容},[true/false], [true/false] )
如:db.person.update( {name : “zhang” }, {$set : {sex : “M”, age : 34}}, true, false)
说明:
1. 修改器是可选的,mongo提供多种修改器,可以选择其中一种或者不选择,如不使用修改器则为强制修改,根据条件查询出的文档将被新文档替换。
2. 第三个参数默认为false,当为true时,其执行方式类似于hibernate的saveOrUpdate,即若有匹配文档时进行更新,若无时则进行插入操作。
3. 第四个参数默认为false,当为true时表示批量修改,为false时只修改匹配的第一条。当批量修改时(参数为true)则需要有一个修改器。
2. 批量更新
设置第三个参数为false,第四个参数为true,并在第二个参数中设置一个修改器。
如:
db.person.update({name : “zhang”},{$set : {sex : “M”}} , false, true)
3. 修改器【通过修改器来完成局部更新操作】
定位器$的使用:如果数据有多个数值,我们只想对其中一部分进行操作就需要使用到定位器了。
如有如下的文档:
{ "_id" : ObjectId("566d151734bf4b74caf0d952"), "name" : "HuXing", "sex" : "F", "age" : 12, "pid" : "111", "family" : [{ "relation" : "father", "name" : "HuChao" }, { "relation" : "mother", "name" : "WangPing" }]}
修改家庭成员中数组中有relation为mother的元素的数组元素为其增加键sex=”F”:
db.person.update({"family.relation":"mother"},$set:"family.$.sex":"F"}})
执行结果:
{ "_id" : ObjectId("566d151734bf4b74caf0d952"), "name" : "HuXing", "sex" : "F", "age" : 12, "sid" : "111", "family" : [{ "relation" : "father", "name" : "Hu" }, { "relation" : "mother", "name" : "Ping", "sex" : "F" }]}
4. 批量更新数组
我们可以通过pushAll修改器将一个数组A更新到一个字段值为数组的字段中,但是这种操作不会判断原数组中是否已有数组A中的元素,只是简单的全部添加,通过addToSet修改器可以进行逻辑判断,若已存在不添加,但是只能一次一个元素,而不是数组形式,通过将addToSet和each进行结合可以解决这个问题。如下:
原文档
{ "_id" : ObjectId("566d1e8a34bf4b74caf0d953"), "name" : "Leon", "sid" : "111", "sex" : "M", "age" : 18.0, "family" : ["father", "mother"]}
批量更新family增加语句操作:
db.person.update({name:"Leon"},{$addToSet:{family:{$each:["father","sister","brother"]}}})
更新后结果如下,没有重复的father元素:
{ "_id" : ObjectId("566d1e8a34bf4b74caf0d953"), "name" : "Leon", "sid" : "111", "sex" : "M", "age" : 18.0, "family" : ["father", "mother", "sister", "brother"]}
当查询条件或者修改内容的键名中有”.”时键名一定要用双引号(”“)包围
- Mongodb学习日志(二):UPDATE及修改器
- 学习MongoDB 二:MongoDB添加、删除、修改
- 学习MongoDB 二:MongoDB添加、删除、修改
- MongoDB小结09 - update【定位修改器】
- MongoDB学习之旅二:MongoDB安装及配置
- MongoDB学习之旅二:MongoDB安装及配置
- Mongodb学习日志(一):安装使用及简单操作
- mongoDB学习(二)之常用的修改操作
- mongoDB学习(二)之常用的修改操作(2)
- MongoDB 学习笔记三 修改器
- MongoDB学习整理(二)--特点及概念介绍
- MongoDB 学习笔记二 CRUD操作 及常用命令
- MongoDB学习日记(六):CRUD - update
- Mongodb嵌套查询及修改
- Mongodb嵌套查询及修改
- MongoDB学习系列 (二)
- MongoDB学习笔记《二》
- 学习Mongodb(二)
- uva10098(简单题)-全排列
- 共享锁与排它锁
- sql海量数据优化
- PAT PAT 1023. Have Fun with Numbers (20)
- 【转】C# 接口的隐式与显示实现
- Mongodb学习日志(二):UPDATE及修改器
- 一些常见的易于混淆的概念
- 源码分享-图片马赛克生成程序
- 7.ROBOTS.TXT的SEO优化
- uva729(简单题) - 全排列
- 见识新勒索软件家族的新招数
- C与Object-c的简单对比
- ps中的各个混合模式
- 必须懂得Win7的15个快捷键操作