mongodb-批量刷新数据

 1、第一种联合删除

db.collection.aggregate([
  {
    $lookup: {
      from: "带刷新数据源表-test1",
      localField: "devCode",
      foreignField: "oldDevCode",
      as: "matching_docs"
    }
  },
  {
    $unwind: "$matching_docs"
  },
  {
    $set: {
      "devCode": "$matching_docs.newDevCode"
    }
  },
  {
    $unset: "matching_docs"
  },
  {
    $merge: {
      into: "被刷新的表-test2",
      on: "_id", // 或者其他唯一标识符字段
      whenMatched: "replace",
      whenNotMatched: "insert"
    }
  }
])

解释:

这是一个MongoDB的聚合查询,主要用于将`test2`集合中的数据与`test1`集合进行联接(lookup),并更新`semp_fault_active`集合中的某些字段。以下是这段聚合查询的详细解释:

1. **$lookup**:


* **from**: 指定要联接的集合,这里是`test1`。
* **localField**: 指定`test2`集合中的哪个字段用于联接,这里是`devCode`。
* **foreignField**: 指定`a_rep_dev`集合中的哪个字段用于联接,这里是`oldDevCode`。
* **as**: 指定联接后的结果存放在哪个字段中,这里是`matching_docs`。
* 结果:每个`semp_fault_active`文档都会有一个`matching_docs`字段,其中包含了与`devCode`匹配的`a_rep_dev`中的所有文档。
2. **$unwind**:


* 用于将`matching_docs`数组中的每个文档拆分为单独的文档。这意味着如果`matching_docs`中有n个文档,那么原始文档就会被拆分成n个文档。
3. **$set**:


* 用于更新`devCode`字段的值。这里,它将`devCode`的值设置为`matching_docs`数组中的`newDevCode`字段的值。
4. **$unset**:


* 用于删除`matching_docs`字段,因为我们在之后的操作中不再需要它。
5. **$merge**:


* 这是一个非常有用的操作,它允许你将聚合的结果合并回一个集合。
* **into**: 指定要合并到的集合,这里是`semp_fault_active`。
* **on**: 指定用于匹配的唯一标识符字段,这里是`_id`。这意味着,如果`semp_fault_active`中已经有一个文档具有相同的`_id`,那么该文档将被更新(根据`whenMatched`参数)。
* **whenMatched**: 指定当文档在目标集合中存在时应该如何处理。这里,选择的是“replace”,意味着匹配到的文档将被替换为聚合的结果。
* **whenNotMatched**: 指定当文档在目标集合中不存在时应该如何处理。这里,选择的是“insert”,意味着非匹配的文档将被插入到目标集合中。

总之,这段聚合查询的主要目的是将`semp_fault_active`集合中的`devCode`字段更新为`a_rep_dev`集合中相应的`newDevCode`字段的值,并将结果合并回`semp_fault_active`集合。如果`_id`字段在`semp_fault_active`集合中已经存在,则替换该文档;如果不存在,则插入新文档。

2、第二种:单表批量删除

db.tableName.deleteMany({ "orderCode": { $in: ['DW-1401-20240329-5124678656000',
'DW-1409-20240329-6089991168000',
'DW-1410-20240327-6157379584000',
'DW-1410-20240327-5389821952000',
'DW-1410-20240327-4504823808000'
] } })

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/605277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

并发问题系统学习(更新中)

进程、线程 进程:进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。可以理解为一个java应用。 线程:线程是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。…

java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条

今天遇到一个问题 系统线上问题,经常出现这样的问题,刚重启系统时不报错了,可是运行一段时间又会出现。sql已经写了limit 1,mybatis的debug日志也返回total为1,可是却报错返回了1805条数据 乍一看,感觉太不…

Elasticsearch的基本使用

Elasticsearch的基本使用 1.基本概念1.1 文档和字段1.2 索引和映射1.3 mysql与elasticsearch对比 2.索引库2.1 es中mapping映射属性2.2.es中索引库的增删改查 3.文档3.1 新增文档3.2 查询文档3.3 删除文档3.4 修改文档3.4.1 全量修改3.4.2 增量修改3.5 总结 4.DSL查询语法4.1 D…

Redis如何保证数据一致性?

Redis如何保证数据一致性? Redis通常作为持久层数据库(例如MySQL)的缓存层,如果缓存或者数据库数据发生改变,如何保证双方的数据是一致的? 这其实是要分情况讨论滴,对数据一致性不同的要求有不…

08.图形化界面字体问题处理

图形化界面字体问题处理 发现图形存在乱码,不显示文字 zabbix服务器的字符集所在的路径下: /usr/share/zabbix/assets/fonts 将本地windows系统的字体进行上传,选择一个自己喜欢的字体 上传到系统路径下并且直接覆盖掉 回到web浏览器界面…

什么是Facebook付费广告营销?

Facebook作为全球最大的社交平台之一,成为了跨境卖家不可或缺的营销阵地。它不仅拥有庞大的用户基数,还提供了丰富的广告工具和社群互动功能,让商家能够精准触达目标市场,提升品牌影响力。云衔科技通过Facebook付费广告营销的专业…

【CSS基础--CSS选择器的常见用法】

CSS选择器的常见用法 1.CSS介绍1.1 基本语法规范1.2 引入样式1.3 规范 2. CSS选择器2.1 标签选择器2.2 类选择器2.3 ID选择器2.4 复合选择器 1.CSS介绍 CSS(Cascading Style Sheet),层叠样式表,由于控制页面的样式。CSS能够对网页…

HTML批量文件上传2——进度条显示

作者:私语茶馆 非常多的云应用中需要上传文本,包括图片,文件等等,这些批量文件上传,往往涉及到进度条显示,多文件上传等,这里分享一个非常好的案例,来自BootStrapfriendly.com&#…

kubernetes附加组件—图形化管理工具Dashboard

一、介绍 Dashboard是k8s集群管理的一个WebUi,它是k8s的一个附加组件,需要单独部署。 我们可以通过图形化的方法,创建、删除、修改、查询k8s资源。 二、安装部署dashboard组件 Github地址:GitHub - kubernetes/dashboard: Gen…

物联网实战--平台篇之(四)账户后台交互

目录 一、交互逻辑 二、请求验证码 三、帐号注册 四、帐号/验证码登录 五、重置密码 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631…

自动驾驶中常见坐标系极其转换

各个传感器坐标系 相机坐标系统 摄像头的作用是把三维世界中的形状、颜色信息,压缩到一张二维图像上。基于摄像头的感知算法则是从二维图像中提取并还原三维世界中的元素和信息,如车道线,车辆、行人等,并计算他们与自己的相对位置。 感知算法和相机相关的坐标系有图像坐…

javaWeb入门(自用)

1. vue学习 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"https://unpkg.com/vue2"></script> </head> <body><div id"…

大语言模型入门介绍(附赠书)

自2022年底ChatGPT的震撼上线以来&#xff0c;大语言模型技术迅速在学术界和工业界引起了广泛关注&#xff0c;标志着人工智能技术的又一次重要跃进。作为当前人工智能领域的前沿技术之一&#xff0c;代表了机器学习模型在规模和复杂性上的显著进步。它们通常由深度神经网络构成…

解决微信小程序电脑能正常使用,手机端无法正常访问的SSL证书问题

目录 前言1 问题描述与调试2 探索问题根源2.1 用户反馈收集2.2 尝试手机端访问2.3 PC端调试 3 确认问题与解决方案3.1 检查SSL证书3.2 重新部署SSL证书3.3 测试修复效果 4 SSL&#xff08;Secure Sockets Layer&#xff09;证书中间证书4.1 SSL证书链的构成4.2 中间证书的作用 …

MindSponge分子动力学模拟——定义一个分子系统

技术背景 在前面两篇文章中&#xff0c;我们分别介绍了分子动力学模拟软件MindSponge的软件架构和安装与使用。这里我们进入到实用化阶段&#xff0c;假定大家都已经在本地部署好了基于MindSpore的MindSponge的编程环境&#xff0c;开始用MindSponge去做一些真正的分子模拟的工…

04、Kafka集群安装

03、Kafka 集群安装 1、准备工作 首先准备一台虚拟机&#xff0c;centos7系统&#xff0c;先在一台上配置安装后&#xff0c;最后克隆成多台机器。 1.1 安装JDK &#xff08;1&#xff09;下载JDK&#xff0c;上传到 /root/software 路径 下载地址&#xff1a;https://www…

DELL EMC unity存储系统如何初始化

在客户的存储使用过程中&#xff0c;经常会碰到一些场景需要对存储系统做重新初始化&#xff0c;就是回到出厂时候的配置。比如&#xff0c;客户设备要利旧&#xff0c;二次使用&#xff0c;一般都要回到出厂状态做重新配置的动作。存储严重故障&#xff0c;没有能力修复或者数…

现货黄金今日行情分析:昨日高低点法

进行交易之前&#xff0c;投资者要对现货黄金今日行情进行一波分析&#xff0c;我们交易决策应该建立在合理分析的基础之上。那么打开市场交易软件看到现货黄金今日行情之后&#xff0c;该如何着手进行分析呢&#xff1f;下面我们就来讨论一下具体的方法。 要进行现货黄金今日行…

【QuikGraph】C#调用第三方库实现迪杰斯特拉(Dijkstra)算法功能

QuikGraph库介绍 项目地址&#xff1a;https://github.com/KeRNeLith/QuikGraph QuikGraph为.NET提供了通用的有向/无向图数据结构和算法。 QuikGraph提供了深度优先搜索、广度优先搜索、A*搜索、最短路径、k最短路径&#xff0c;最大流量、最小生成树等算法。 QuikGraph最初…

大模型的不足与解决方案

文章目录 ⭐ 不具备记忆能力 上下文窗口受限⭐ 实时信息更新慢 新旧知识难区分⭐ 内部操作很灵活 外部系统难操作⭐ 无法为专业问题 提供靠谱的答案⭐ 解决方案的结果 各有不同的侧重 在前面三个章节呢&#xff0c;为大家从技术的角度介绍了大模型的历程与发展&#xff0c;也为…
最新文章