文档的更新操作 | 学习笔记

简介: 快速学习 文档的更新操作

开发者学堂课程【MongoDB精讲课程(上):文档的更新操作学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/726/detail/12957


文档的更新操作


内容介绍:

一,更新文档的语法

二,覆盖的修改

三,局部修改

四,批量的修改

五,列值增长的修改

 

一,更新文档的语法

db .collection.update(queryupdateoptions)

/ /

db.collection.update(

<query> ,

<update>,

{

upsert: <boolean> ,

multi: <boo1ean>,

writeConcern: <document> ,

collation: <document>,

arrayFilters: [  <filter document1>, ... ],

hint:  <document |string>         // Available starting in MongoDB 4.2

}

以上为文档更新的语法,语法格式为 db.collection 名称+执行方法(例如本节课执行的就是方法就是更新: update ), update 后面会跟有三个参数:

query:查询条件、update :更新条件、option :附带选项。

 

二,覆盖的修改

db.comment.find 来查询修改之前 comment 表里的数据为:

image.png

如果我们想修改 _id 1的记录,点赞量为1001,输入以下语句:

db.comment. update({_id: "1"},{likenum : NumberInt(1001)})

执行成功后会显示:

WriteResult({nMatched : 1, nUpserted : 0, nModifide : 1 })

nModifide 说明我们成功修改了一条数据。

执行结果:

image.png

我们会发现,这条文档除了 likenum 字段其它字段都不见了,即之前的文档数据被 likenum : NumberInt(1001) 替换掉了。这就叫做覆盖的修改。

 

三,局部修改

为了解决覆盖修改的问题,我们需要使用修改器 $set 来实现,

命令如下:

如果我们想修改_id 2的记录,点赞量为1001,输入以下语句:

db.comment.update({_id:"2"},{$set:{likenum :NumberInt(1001)}})

执行结果如下:

image.png

这时我们发现我们只更改了点赞量的字段,其他数据没有变化,着就叫做局部修改。

 

四,批量的修改

如果我们想更新所有用户为1003的用户的昵称为张三。

需要输入指令:

db . comment.update({userid: "1003"},{$set:{nickname: "张三"}}

这时我们会发现执行后显示:

WriteResult({“nMatched : 1, nUpserted : 0, nModifide : 1 })

执行结果:

image.png

也就是说刚才的指令默认只修改第一条指令

如果想要两条数据,就需要在刚才执行的指令里加上第三个参数 option,在这里给 multi 配置为 true

修改后的指令:

db . comment.update({userid: "1003"},{$set:{nickname: "李四""}},{multi:true})

这里我们把用户名为1003的都修改为李四。

执行后会显示:

WriteResult({nMatched : 2, nUpserted : 0, nModifide : 2 })

即修改了两条数据。

执行结果:

image.png

这就是批量修改。

 

五,列值增长的修改

如果我们想实现对某列值在原有值的基础上进行增加或减少,可以使用$inc 运算符来实现。

需求:3号数据的点赞数,每点一次递增1

输入以下指令:

db.comment.update({_id:"3"},{$inc:{likenum: NumberInt(1)}})

执行结果:

image.png

这时我们发现,执行前点赞数为666,执行后为667,这就是列值增长的修改。

相关文章
|
10月前
|
前端开发 JavaScript
CSS 过渡和动画
CSS过渡和动画是用于为网页元素添加动态效果的两种重要技术
518 143
|
11月前
|
存储 算法 C++
【C++数据结构——图】图的邻接矩阵和邻接表的存储(头歌实践教学平台习题)【合集】
本任务要求编写程序实现图的邻接矩阵和邻接表的存储。需掌握带权有向图、图的邻接矩阵及邻接表的概念。邻接矩阵用于表示顶点间的连接关系,邻接表则通过链表结构存储图信息。测试输入为图的顶点数、边数及邻接矩阵,预期输出为Prim算法求解结果。通关代码提供了完整的C++实现,包括输入、构建和打印邻接矩阵与邻接表的功能。
534 10
|
9月前
|
虚拟化 iOS开发 MacOS
VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
470 33
VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
|
8月前
|
域名解析 API PHP
VM虚拟机全版本网盘+免费本地网络穿透端口映射实时同步动态家庭IP教程
本文介绍了如何通过网络穿透技术让公网直接访问家庭电脑,充分发挥本地硬件性能。相比第三方服务受限于转发带宽,此方法利用自家宽带实现更高效率。文章详细讲解了端口映射教程,包括不同网络环境(仅光猫、光猫+路由器)下的设置步骤,并提供实时同步动态IP的两种方案:自建服务器或使用三方API接口。最后附上VM虚拟机全版本下载链接,便于用户在穿透后将服务运行于虚拟环境中,提升安全性与适用性。
443 7
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
437 2
|
10月前
|
虚拟化 iOS开发 MacOS
VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
412 7
VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
|
9月前
|
虚拟化 iOS开发 MacOS
VMware ESXi 7.0U3s macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 7.0U3s macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
196 1
VMware ESXi 7.0U3s macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
|
9月前
|
固态存储 虚拟化 iOS开发
VMware ESXi 8.0U2d macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 8.0U2d macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
545 1
VMware ESXi 8.0U2d macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
|
10月前
|
固态存储 虚拟化 iOS开发
VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 2.7 集成 Realtek 网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 2.7 集成 Realtek 网卡驱动和 NVMe 驱动 (集成驱动版)
460 1
VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 2.7 集成 Realtek 网卡驱动和 NVMe 驱动 (集成驱动版)
|
10月前
|
虚拟化 iOS开发 MacOS
VMware ESXi 7.0U3r macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 7.0U3r macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
242 0
VMware ESXi 7.0U3r macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)