整理mongodb文档:改

个人博客

整理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.rhkb.cn/news/83713.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring】使用注解的方式获取Bean对象(对象装配)

目录 一、了解对象装配 1、属性注入 1.1、属性注入的优缺点分析 2、setter注入 2.1、setter注入的优缺点分析 3、构造方法注入 3.1、构造方法注入的优缺点 二、Resource注解 三、综合练习 上一个博客中,我们了解了使用注解快速的将对象存储到Spring中&#x…

《大型网站技术架构设计》第二篇 架构-性能

不同视角下的网站性能 1、用户 从用户角度,网站性能就是用户在浏览器上直观感受到的网站响应速度快还是慢。用户感受到的时间。 2、开发人员 开发人员关注的主要是应用程序本身及其相关子系统的性能,包括响应延迟、系统吞吐量、并发处理能力、系统稳定…

nsqd的架构及源码分析

文章目录 一 nsq的整体代码结构 二 回顾nsq的整体架构图 三 nsqd进程的作用 四 nsqd启动流程的源码分析 五 本篇博客总结 在博客 nsq整体架构及各个部件作用详解_YZF_Kevin的博客-CSDN博客 中我们讲了nsq的整体框架,各个部件的大致作用。如果没看过的&…

【100天精通python】Day30:使用python操作数据库_数据库基础入门

专栏导读 专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html 1 数据库基础知识介绍 1.1 什么是数据库? 数据库是一个结构化存储和组织数据的集合,它可以被有效地访问、管理和更新。数据库的目的是为了提供一种可靠的…

paddleseg数据集自定义比例划分为测试集test.txt,训练集train.txt,验证集val.txt

将语义分割的数据集标注好后如下所示: 整理好图片和标签文后需要按照比例划分为训练集,验证集,测试集。 具体划分代码见下: import glob import os.path import argparse import warnings import numpy as npdef parse_args():p…

“清凉计划”KCOFFEE来了,华为天气和肯德基携手提升你的冰凉咖位

八月的热浪席卷着城市,开启了高温酷暑的“闷烤”模式,此时“怕热星人”急需一杯冰爽的冷饮,为了拯救热热热亻七的你们,华为天气联手肯德基带着超强冷势力,发起“清凉计划”,送上一杯KCOFFEE现磨冰咖啡&…

Debian10:安装PHPVirtualBox

PHPVirtualBox 是一个用 PHP 编写,用于管理 VirtualBox 的 Web 前端(由AJAX实现)。 参考文章:VirtualBoxPHPVirtualBox部署_骡子先生的博客-CSDN博客php virualbox,浏览器远程控制VBox 虚拟机phpVirtualBox_weixin_39815879的博客…

编写一个指令(v-focus2end)使输入框文本在聚焦时焦点在文本最后一个位置

项目反馈输入框内容比较多时候,让鼠标光标在最后一个位置,心想什么奇葩需求,后面试了一下,是有点影响体验,于是就有了下面的效果,我目前的项目都是若依的架子,用的是vue2版本。vue3的朋友想要使…

JVM—编译器、类加载的过程、双亲委派机制这些你还记得吗?

背景介绍 这两天在对JVM的知识进行回顾,顺便来分享分享,接下来也会有系列文章,欢迎大家一起讨论。 过程 为什么叫JVM? Java Virtual Machine,java虚拟机。可以理解成一个以字节码为机器指令的CPU 有哪些特点呢&#…

【Flutter】【packages】simple_animations 简单的实现动画

package:simple_animations 导入包到项目中去 可以实现简单的动画, 快速实现,不需要自己过多的设置 有多种样式可以实现[ ] 功能: 简单的用例:具体需要详细可以去 pub 链接地址 1. PlayAnimationBuilder PlayAnima…

递归神经网络简介

一、说明 说起递归神经网络,递归神经网络(RNN)主要包括以下几种类型: 简单的RNN(Simple RNN):最基本的RNN类型,每个时刻的输出都与前面时刻的状态有关。 循环神经网络(R…

Blazor前后端框架Known-V1.2.10

V1.2.10 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。 Gitee: https://gitee.com/known/KnownGithub:https://github.com/known/Known 概述 基于C#和Blazo…

Kafka:springboot集成kafka收发消息

kafka环境搭建参考Kafka&#xff1a;安装和配置_moreCalm的博客-CSDN博客 1、springboot中引入kafka依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><…

Python-OpenCV中的图像处理-形态学转换

Python-OpenCV中的图像处理-形态学转换 形态学转换腐蚀膨胀开运算闭运算形态学梯度礼帽黑帽形态学操作之间的关系 形态学代码例程 形态学转换 形态学操作:腐蚀&#xff0c;膨胀&#xff0c;开运算&#xff0c;闭运算&#xff0c;形态学梯度&#xff0c;礼帽&#xff0c;黑帽等…

B树的插入与删除过程

B树的插入 原树&#xff1a; 插入key后&#xff0c;若导致原节点关键字数超过上限&#xff0c;则从中间位置&#xff08; ⌈ m 2 ⌉ \lceil\frac{m}{2}\rceil ⌈2m​⌉&#xff09;将关键字分成两部分&#xff0c;左部分包含的关键字放在原节点中&#xff0c;右部分包含的关键…

前端下载文化部几种方法(excel,zip,html,markdown、图片等等)和导出 zip 压缩包

文章目录 1、location.href2、location.href3、a标签4、请求后端的方式5、文件下载的方式6、Blob和Base647、下载附件方法(excel,zip,html,markdown)8、封装下载函数9、导出 zip 压缩包相关方法(流方式) 总结 1、location.href //get请求 window.location.href url;2、locati…

死锁的成因,和解决方案总结

何为死锁 死锁是多线程或并发程序中的一种情况&#xff0c;当多个线程因为竞争资源而相互等待&#xff0c;并且无法继续执行的情况。在死锁中&#xff0c;每个线程都在等待其他线程释放资源&#xff0c;从而导致所有线程都陷入无限等待状态&#xff0c;无法继续向前执行&#…

0805hw

1. #include <myhead.h> void Bub_sort(int *arr,int n)//冒泡排序 {for(int i1;i<n;i){int count0;for(int j0;j<n-i;j){if(arr[j]>arr[j1]){int temparr[j];arr[j]arr[j1];arr[j1]temp;count;}}if(count0){break;}}printf("冒泡排序后输出结果:\n"…

uni-app离线打包高德地图导入android studio不能正常显示

本人使用的uni-app SDK版本&#xff1a;Android-SDK3.8.7.81902_20230704 1.导入以上文件&#xff0c;依赖已经自动添加了 2.确保这个正常引入 3.修改AndroidMainifest.xml,添加自己的密钥

整理mongodb文档:删

个人博客 整理mongodb文档:删 求关注&#xff0c;哪儿不足&#xff0c;求大佬们指出&#xff0c;哪儿写的不够通俗易懂跟清晰&#xff0c;也求指出 文章概叙 本文主要是介绍了删除数据的几个方法&#xff0c;主要还是在介绍deleteMany、deleteOne以及remove&#xff0c;对于…