整理mongodb文档:改

news/2025/2/25 8:09:38

个人博客

整理mongodb文档:改
求关注,求批评,求进步

文章概叙

本文主要讲的是mongodb的updateOne以及updateMany,主要还是在shell下进行操作,也讲解下主要的参数upsert以及更新的参数。

数据准备

本次需要准备的数据不是很多,就两条就可以了

db.test.insertMany([
    { string: 'a', number: 1 },
    { string: 'A', number: 1 }
])

updateOne

Updates a single document within the collection based on the filter.
顾名思义,在过滤筛选的结果上更新单个文档,示例代码如下

db.test.updateOne(
    { string: 'a' },
    { $set: { string: 'a1', number: 1 } },
    { upsert: true }
)

这儿传入了三个参数,第一个是我们的filter,也就是过滤条件,而我们操作的数据就是根据这个过滤条件查询出来的,如果返回的数据有多条,则只操作第一条。

第二个参数是更新操作,$set代表的是设置值,属于更新运算符的范畴,具体可以看下面链接,理解更多的操作符。
Update Operators — MongoDB Manual

第三个参数是配置项,最经常用到的是upsert以及collation,文章下面也会讲到,这儿只是大概讲解该api的结构。
最终,更改后的结果如下,可以看到已经将原来的a更改为了a1.
在这里插入图片描述

updateMany

Updates all documents that match the specified filter for a collection.
顾名思义,在过滤筛选的结果上更新所有的文档,老规矩,先来一个例子作为讲解。

db.test.updateMany(
    { number: 1 },
    { $set: { string: 'a1', number: 1 } },
    { upsert: true }
)

对于该API的参数,也跟上面的updateOne差不多,只是更新的是查询出来的全部数据。

在这里插入图片描述

update

需要注意的是,该api在5.0之后就不建议使用了,就废弃了。

默认情况下,update用于更新单个文档,如果需要更新多个文档,需要用到multi选项。
下面是一个简单的实例,只是让大家看下这个语法怎么用而已,毕竟已经是一个废弃的API了。

db.test.update(
    { number: 1 },
    { $set: { string: 'a1', number: 1 } },
    { upsert: true ,multi:true}
)

在这里插入图片描述

介绍完了三个最主要的API的用法,接下来用updateMany作为例子,讲下几个主要的参数。

update

update是指我们要更新的操作,最简单的例子就是使用$set。update的操作有两种类型,下面先介绍如何使用更新运算符操作。
更新运算符有三种类型,最常用的是数组以及字段的更新运算符,下面会拿字段的更新运算符做个例子,先抄录​表格如下:
在这里插入图片描述

$set之前已经试过了,现在试试$currentDate来给一个字段赋值当前的时间。

db.test.updateMany(
    { number: 1 },
    { $currentDate: { lastModified: true } },
    { upsert: true, multi: true }
)

​其他的用法再看文档的实例,用起来不会有什么难度。

upsert

Creates a new document if no documents match the . For more details see filterupsert behavior.
​文档中对于upsert的解释是:如果没有找到文档时候是否创建。下面用一个简单的例子来说明

db.test.updateMany(
    { number: 2 },
    { $currentDate: { lastModified: true } },
    { upsert: true, multi: true }
)

在这里插入图片描述

可以看到, 当我们运行语句的时候,upsert为true,则表示没有找到number为2的数据的情况下,mongodb帮我们创建了一条数据。相同,如果​upsert为false,则不会创建。

collation

之前有专门的博客讲解过这个参数,就不专门再说了,collation影响的是查数据出来的顺序
整理mongodb文档:collation

聚合管道

聚合管道可以理解为一堆数据,先通过a操作,然后再通过b操作,最后将数据整合成为自己想要的模型,在更新操作中,聚合管道有下面几个阶段。​

$addFields
$set
$project
$unset
$replaceRoot
$replaceWith

这儿我会通过一个简单的例子让大家了解下如何使用聚合管道,而关于具体的聚合管道,后续会写个博客介绍,本文章最主要是让大家对这几个api有了解,不会很一脸茫然。​

举个例子,下面的代码会将我们之前的number等于2的数据删除掉lastModified字段,增加string字段

db.test.updateMany(
    { number: 2 },
    [
        { "$project": { "lastModified": 0 } },
        { "$set": { string: 'a2' } }
    ],
    { upsert: true }
)

在这里插入图片描述

最后的点

至此,关于update的几个主要的点,讲解完毕,对于新手我不建议现在去看聚合管道,所以没​马上讲,我的建议是先看完增删改查。
最后,你觉得上单锐雯怎么玩呢?​来个大佬。。。。


http://www.niftyadmin.cn/n/4927583.html

相关文章

uniapp文件下载并预览

大概就是这样的咯&#xff0c;文件展示到页面上&#xff0c;点击文件下载并预览该文件&#xff1b; 通过点击事件handleDownLoad(file.path)&#xff0c;file.path为文件的地址&#xff1b; <view class"files"><view class"cont" v-for"(…

3.5 C++ 纯虚函数、抽象类 3.6 依赖倒转原则

纯虚函数 class A { public:virtual void print(){cout<<"A"<<endl;}virtual void test()0; //纯虚函数 }; 一个类内有纯虚函数&#xff0c;这个类就叫抽象类&#xff1b; 抽象类不能实例化&#xff1b; <java、python&#xff1a…

流量分析日志查看

一流量分析 buuctf wireshark 从题目出发&#xff0c;既然是上传登录信息&#xff0c;就直接过滤post请求&#xff0c;即搜索 http.request.methodPOST&#xff0c;因为上传用户登录信息使用的一定是http里的post方法 模式过滤 http.request.method “GET” http.request.…

如何通过nginx反向代理实现不同域名映射到同一台服务器的相同端口

要在Nginx中实现不同域名映射到同一台服务器的相同端口&#xff0c;您可以使用Nginx的代理转发技术。 首先&#xff0c;您需要了解Nginx的代理转发工作原理。Nginx的代理转发是指在代理服务器&#xff08;proxy server&#xff09;收到一个请求时&#xff0c;先将请求转发给目…

[C++]02.选择结构与循环结构

02.选择结构与循环结构 一.程序流程结构1.选择结构1.1.if语句1.2.三目运算符1.3.switch语句 2.循环结构2.1.while语句2.2.do-while语句2.3.for语句2.4.break语句2.5.continue语句2.6.goto语句 一.程序流程结构 C/C支持的最基本的运行结构: 顺序结构, 选择结构, 循环结构顺序结…

1030:计算球的体积

【题目描述】 对于半径为r的球&#xff0c;其体积的计算公式为V4/3π(r^3)&#xff0c;这里取π3.14。现给定r&#xff0c;即球半径&#xff0c;类型为double&#xff0c;求球的体积V&#xff0c;保留到小数点后2位。 【输入】 输入为一个不超过100的非负实数&#xff0c;即…

【从零学习python 】11.Python循环语句和控制流程

文章目录 while 语法for循环for循环的格式range break和continuebreak的使用continue的使用 嵌套循环while嵌套的格式语法结构:练习题答案进阶案例 while 语法 while 判断条件:代码块我们发现&#xff0c;while循环的语法结构和if语句的结构很相像&#xff0c;那么这两个之间有…

【结构型设计模式】C#设计模式之桥接模式

题目&#xff1a;设计一个桥接模式来实现图形和颜色之间的解耦。 解析&#xff1a; 桥接模式是一种结构型设计模式&#xff0c;它将抽象部分与实现部分分离&#xff0c;使它们可以独立变化。在这个例子中&#xff0c;抽象部分是图形&#xff08;如圆形、正方形&#xff09;&am…