3.4.3 文档的更新

简介: MongoDB文档操作详解:涵盖update更新语法,支持覆盖、局部($set)、批量(multi)及数值增减($inc)修改;remove删除指定或全部数据;结合count统计、limit/skip分页及sort排序实现高效查询。

更新文档的语法:
db.collection.update(query, update, options)
//或
db.collection.update(

,

,
{
upsert: ,
multi: ,
writeConcern: ,
collation: ,
arrayFilters: [ , ... ],
hint: // Available starting in MongoDB 4.2
}
)
(1)覆盖的修改
如果我们想修改_id为1的记录,点赞量为1001,输入以下语句:
db.comment.update({_id:"1"},{likenum:NumberInt(1001)})
执行后,我们会发现,这条文档除了likenum字段其它字段都不见了,
(2)局部修改
为了解决这个问题,我们需要使用修改器$set来实现,命令如下,我们想修改_id为2的记录,浏览量为889,输入以下语句:
db.comment.update({_id:"2"},{$set:{likenum:NumberInt(889)}})
(3)批量的修改
更新所有用户为 1003 的用户的昵称为凯撒大帝 。提示:如果不加后面的参数,则只更新符合条件的第一条记录
//默认只修改第一条数据
db.comment.update({userid:"1003"},{$set:{nickname:"凯撒2"}})
//修改所有符合条件的数据
db.comment.update({userid:"1003"},{$set:{nickname:"凯撒大帝"}},{multi:true})
(3)列值增长的修改
如果我们想实现对某列值在原有值的基础上进行增加或减少,可以使用 $inc 运算符来实现。
需求:对3号数据的点赞数,每次递增1
db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})
3.4.4 删除文档
删除文档的语法结构:
db.集合名称.remove(条件)
以下语句可以将数据全部删除,请慎用
db.comment.remove({})
如果删除_id=1的记录,输入以下语句
db.comment.remove({_id:"1"})
3.5 文档的分页查询
3.5.1 统计查询
统计查询使用count()方法,语法如下:
db.collection.count(query, options)
(1)统计所有记录数
统计comment集合的所有的记录数:
db.comment.count()
(2)按条件统计记录数
例如:统计userid为1003的记录条数
db.comment.count({userid:"1003"})
提示: 默认情况下 count() 方法返回符合条件的全部记录条数。
3.5.2 分页列表查询
可以使用limit()方法来读取指定数量的数据,使用skip()方法来跳过指定数量的数据。 基本语法如下所示:
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
如果你想返回指定条数的记录,可以在find方法后调用limit来返回结果(TopN),默认值20,例如:
db.comment.find().limit(3)
skip方法同样接受一个数字参数作为跳过的记录条数。(前N个不要),默认值是0
db.comment.find().skip(3)
分页查询:需求:每页2个,第二页开始:跳过前两条数据,接着值显示3和4条数据
//第一页
db.comment.find().skip(0).limit(2)
//第二页
db.comment.find().skip(2).limit(2)
//第三页
db.comment.find().skip(4).limit(2)
3.5.3 排序查询
sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
语法如下所示:
db.COLLECTION_NAME.find().sort({KEY:1})

db.集合名称.find().sort(排序方式)
例如:
对userid降序排列,并对访问量进行升序排列
db.comment.find().sort({userid:-1,likenum:1})

相关文章
|
存储 缓存 NoSQL
数据库实体与关系模型
【5月更文挑战第16天】本文介绍了数据库模型和UML关系,UML包括依赖、关联(聚合、组合)、泛化和实现4类关系。UML有13种图,分为结构图、行为图和交互图。数据库的基本数据模型包括外模式(用户视图)、概念模式(全局逻辑结构)和内模式(物理存储)。数据模型三要素是数据结构、操作和约束条件。简单易用的缓存数据模型适用于需求灵活、高性能、大数据量且不要求强一致性的场景。
509 5
数据库实体与关系模型
|
存储 物联网 测试技术
改变LoRA的初始化方式,北大新方法PiSSA显著提升微调效果
【4月更文挑战第23天】北京大学团队提出的新方法PiSSA,基于SVD进行参数高效微调,降低计算成本。PiSSA通过聚焦低秩矩阵训练,实现与全参数微调相当甚至更好的性能,快于LoRA收敛且在五个基准测试中胜出。PiSSA继承LoRA的参数效率,初始化仅需几秒,适合快速适应不同下游任务。尽管有潜力,但其在更大模型和任务上的效果,以及与LoRA结合的可能优化,仍是未来研究课题。[链接](https://arxiv.org/pdf/2404.02948.pdf)
599 7
|
4月前
|
人工智能 安全 搜索推荐
钉钉发布全球首个工作智能操作系统Agent OS,专为AI打造
AI钉钉1.1版本名为“木兰”,距离钉钉发布AI钉钉1.0版本“蕨”不到四个月。“蕨象征着破土,木兰是破土后的初生。”钉钉创始人、CEO陈航(花名:无招)说,“未来,钉钉上所有AI Agent都基于Agent OS搭建和运行,让AI直连物理世界。”
326 1
|
4月前
|
存储 编解码 JSON
16 RPC 实战:剖析 gRPC 源码,动手实现一个完整的 RPC
本课通过剖析gRPC源码,实战实现完整RPC框架。从动态代理、序列化到HTTP/2协议,详解请求发送与接收流程,涵盖Stub生成、数据封装、Frame传输、Netty编解码等核心机制,助你掌握高性能RPC设计精髓。
|
4月前
|
弹性计算
阿里云服务器最便宜多少钱一年?38元一年,配置、价格及购买限制介绍
现在阿里云服务器最便宜多少钱一年?38元一年,配置、价格及购买限制介绍来了,亲身测试是38元一年,价格确实便宜,38元一年相当于3元1个月、一毛钱一天。这是一台轻量应用服务器,200M峰值带宽、2核2G、40G ESSD系统盘,不限流量。
|
传感器 机器学习/深度学习 人工智能
仿生机器人:自然界灵感的工程应用
【10月更文挑战第14天】仿生机器人作为自然界灵感与工程技术的完美结合,正逐步改变着我们的生活和工作方式。通过深入了解其设计原理、关键技术、应用领域以及未来的发展趋势,我们可以更加清晰地看到仿生机器人在推动科技创新和社会发展中的重要作用。让我们共同期待仿生机器人在未来带来的更多惊喜和变革!
|
存储 缓存 分布式计算
【赵渝强老师】Spark RDD的缓存机制
Spark RDD通过`persist`或`cache`方法可将计算结果缓存,但并非立即生效,而是在触发action时才缓存到内存中供重用。`cache`方法实际调用了`persist(StorageLevel.MEMORY_ONLY)`。RDD缓存可能因内存不足被删除,建议结合检查点机制保证容错。示例中,读取大文件并多次调用`count`,使用缓存后执行效率显著提升,最后一次计算仅耗时98ms。
393 0
【赵渝强老师】Spark RDD的缓存机制
|
存储 分布式计算 Hadoop
云计算——ACA学习 云计算核心技术
云计算——ACA学习 云计算核心技术
477 0
|
存储 NoSQL 数据挖掘
MongoDB应用案例
MongoDB应用案例
627 1
|
Web App开发 XML 网络协议