• mongodb-批量刷新数据


     1、第一种联合删除

    1. db.collection.aggregate([
    2. {
    3. $lookup: {
    4. from: "带刷新数据源表-test1",
    5. localField: "devCode",
    6. foreignField: "oldDevCode",
    7. as: "matching_docs"
    8. }
    9. },
    10. {
    11. $unwind: "$matching_docs"
    12. },
    13. {
    14. $set: {
    15. "devCode": "$matching_docs.newDevCode"
    16. }
    17. },
    18. {
    19. $unset: "matching_docs"
    20. },
    21. {
    22. $merge: {
    23. into: "被刷新的表-test2",
    24. on: "_id", // 或者其他唯一标识符字段
    25. whenMatched: "replace",
    26. whenNotMatched: "insert"
    27. }
    28. }
    29. ])

    解释:

    这是一个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、第二种:单表批量删除

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

  • 相关阅读:
    机器学习——异常检测
    查询两张表的信息 可能用到两张实体类 所以可以创建一个新的实体类来装 新的实体类可以有两个表的属性,或者继承复用父类。
    SpringBoot | SpringBoot多种过滤器配置方式
    从裸机开始安装操作系统
    网工内推 | 字节原厂,正式编,网络工程师,最高30K*15薪
    ROS 仿真
    文举论金:黄金原油全面走势分析策略指导。
    隧道网络对讲广播音频终端-智慧工地网络报警求助箱
    1.3 特殊的矩阵乘法
    Docker的部署与基本使用
  • 原文地址:https://blog.csdn.net/jll126/article/details/137871909