MongoDB修改文档

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB修改文档 一、文档替换     文档替换其实在之前已经有讲过了,就是传入两个对象,第一个对象作为调节,第二个条件作为满足条件的文档修改的内容,例如:     db.test.

MongoDB修改文档

一、文档替换

    文档替换其实在之前已经有讲过了,就是传入两个对象,第一个对象作为调节,第二个条件作为满足条件的文档修改的内容,例如:

    db.test.update({"name":"kevin-01"} , {"name": "kevin"});   # 修改  前面条件为,后面为修改的属性和值

 

二、修改器进行修改

    文档提交比较好理解,而修改器是在后面一个文档为对象的基础上,将对象的根key作为修改器类型,后面的对象为真正修改操作的对象,如: {"$set"{} }

1、$set $unset

    db.test.update({"name":"kevin-01", {"$set":{"age":NumberInt("18")}}}); # 满足条件:修改年龄字段,没有年龄字段则进行添加

    db.test.update({"name":"kevin-01"},{"$unset":{"age": }});               # 满足条件:删除age字段

2、$inc(减少值可以用负数)

    db.test.update("name":"kevin-01",{"$inc":{"age": 5}});  # 满足条件,年龄加5岁(负数表示减去

3、$push ($each、$slice、 $sort)

    1)、 往数组对象中添加一个元素

    db.test.update({"name":"kevin-01"},{"$push":{"comments":{"id":"1","content":"content-01"}}});

 

    2)、往数组中添加多个元素,使用$each

    commentsArr = [{"id":NumberInt("2","content":"content-02")},{"id":NumberInt("3","content":"content-03")}];

    db.test.update("name":"kevin-01",{"$push":{"$each": commentsArr }});

    3)、往数组中添加多个元素,并进行排序($sort,值为1表示正序,-1反之),只保留最近的多少个元素($slice,值只能为负数)

    commentsArr = [{"id":NumberInt("2","content":"content-02")},{"id":NumberInt("3","content":"content-03")}];

    db.test.update(user, {"$push":{"comments":
           {"$each":[{"id":NumberInt("2"),"content":"content-02"},{"id":NumberInt("3"),"content":"content-03"}],
            "$slice":-2,
            "$sort":{"id":-1}

    }}});

4、$addToSet

    往数组中添加的数据,为了保证不重复,则可以使用$addToSet,并且可以配置$each进行使用,就想配合$push一样:

    db.test.update({"name":"kevin-01"},{"$addToSet":{"email":"kevin-01@163.com"}});

    db.test.update({"name":"kevin-01"},{"$addToSet":{"email":{"$each":["kevin-01@163.com","kevin-02@163.com"]}}});

5、$pop、$pull

    1)、从数组的尾部或者头部删除一个元素, 1表示重尾部删除,-1表示从头部删除

    db.test.update({"name":"kevin-01"},{"$pop":{"email":1}});

    2)、从数组中删除满足条件的元素

    db.test.update({"name":"kevin-01"},{"$pull":{"email":"kevin-01@163.com"}});

三、upsert(添加或更新文档)

    1)、upinsert

    # 更新的时候,第一个对象为条件,第二个对象为修改的内容,第三个为true,表示新增或修改

    db.test.update({"name":"kevin-01"},{"classNo":NumberInt("5")},true); 

    2)、$setOnInsert

    # 只保证文档在插入时生效,修改时候则保持不变,如创建时间(createdAt)字段,这也是阿里手册规范

    db.test.update({"name":"kevin-01",{"$setOnInsert":{"createdAt":new Date()}}, true});

    3)、save(方便操作,直接见下图)

三、更新多个文档

    update的第一个参数对象为条件,第二个参数对象为更新的对象,第三个为是否upinsert,第四个为是否修改所有满足条件的所有文档,默认关闭,只修改满足条件的第一条

    db.test.update({条件},{修改},false, true);

原文地址 https://blog.csdn.net/it_lihongmin/article/details/81410707
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
3月前
|
NoSQL MongoDB 微服务
微服务——MongoDB常用命令——文档的分页查询
本文介绍了文档分页查询的相关内容,包括统计查询、分页列表查询和排序查询。统计查询使用 `count()` 方法获取记录总数或按条件统计;分页查询通过 `limit()` 和 `skip()` 方法实现,控制返回和跳过的数据量;排序查询利用 `sort()` 方法,按指定字段升序(1)或降序(-1)排列。同时提示,`skip()`、`limit()` 和 `sort()` 的执行顺序与编写顺序无关,优先级为 `sort()` > `skip()` > `limit()`。
89 1
|
3月前
|
JSON NoSQL MongoDB
微服务——MongoDB常用命令——文档基本CRUD
本文介绍了MongoDB中文档的基本操作,包括插入、查询、更新和删除。单个文档插入使用`insert()`或`save()`方法,批量插入用`insertMany()`。查询所有文档用`find()`,条件查询可在`find()`中添加参数,投影查询控制返回字段。更新文档通过`update()`实现,支持覆盖修改、局部修改(使用`$set`)和批量修改。列值增长可用`$inc`实现。删除文档用`remove()`,需谨慎操作以免误删数据。此外,文档键值对有序,区分大小写,不能有重复键。
90 1
|
8月前
|
NoSQL MongoDB 数据库
MongoDB 更新文档
10月更文挑战第14天
113 2
|
8月前
|
存储 NoSQL MongoDB
数据的存储--MongoDB文档存储(二)
数据的存储--MongoDB文档存储(二)
199 2
|
5月前
|
存储 监控 NoSQL
【赵渝强老师】MongoDB文档级别的并发控制
MongoDB使用WiredTiger存储引擎在文档级别进行并发控制,允许多个写操作同时修改不同文档,但对同一文档的修改需序列化执行。引擎采用乐观锁和意向锁机制处理冲突。通过视频讲解、插入大量文档示例及使用`mongotop`和`db.serverStatus()`命令,演示了如何监控MongoDB的锁信息和读写统计,展示了数据库和集合级别的写锁情况。
153 29
|
8月前
|
SQL NoSQL MongoDB
MongoDB 查询文档
10月更文挑战第15天
168 1
|
8月前
|
存储 NoSQL 关系型数据库
数据的存储--MongoDB文档存储(一)
数据的存储--MongoDB文档存储(一)
290 3
|
8月前
|
NoSQL MongoDB
MongoDB 删除文档
10月更文挑战第15天
112 0
|
8月前
|
存储 JSON NoSQL
MongoDB 插入文档
10月更文挑战第14天
164 0

推荐镜像

更多