如何获得结果的结果匹配MongoDB中的子图案

发布于 2025-02-13 08:24:56 字数 8434 浏览 0 评论 0原文

**Below is the input array** 

   [
      {
        "CDF": {
          "UTILITYTYPE": {
            "D1": {
              "G1": "12387835",
              "G22": {
                "NAME": "L1"
              }
            },
            "D5": {
              "EVENT": [
                {
                  "CODE": "13",
                  "TIME": "29-05-2022 13:26:00",
                  "STATUS": "0",
                        "SNAPSHOT": [{
                            "PARAMCODE": "P1-2-1-1-0",
                            "VALUE": "114.94",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-2-1-0",
                            "VALUE": "119.54",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-3-1-0",
                            "VALUE": "236.78",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P2-1-1-1-0",
                            "VALUE": "1.836",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-2-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-3-1-0",
                            "VALUE": "0.87",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P4-1-1-0-0",
                            "VALUE": "0.82",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-2-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-3-1-0-0",
                            "VALUE": "0.99",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P7-1-5-2-0",
                            "VALUE": "37923.31",
                            "UNIT": "k"
                        }]            
                },
                {
                  "CODE": "13",
                  "TIME": "29-05-2022 14:41:00",
                  "STATUS": "1",
                        "SNAPSHOT": [{
                            "PARAMCODE": "P1-2-1-1-0",
                            "VALUE": "119.54",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-2-1-0",
                            "VALUE": "124.13",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-3-1-0",
                            "VALUE": "243.67",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P2-1-1-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-2-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-3-1-0",
                            "VALUE": "0.888",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P4-1-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-2-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-3-1-0-0",
                            "VALUE": "-0.99",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P7-1-5-2-0",
                            "VALUE": "37923.64",
                            "UNIT": "k"
                        }]            
                }
              ]
            }
          }
        }
      },
      {
        "CDF": {
          "UTILITYTYPE": {
            "D1": {
              "G1": "12388215",
              "G22": {
                "NAME": "L2"
              }
            },
            "D5": {
              "EVENT": [
                {
                  "CODE": "7",
                  "TIME": "16-05-2022 04:28:21",
                  "STATUS": "0",
                       "SNAPSHOT": [{
                            "PARAMCODE": "P1-2-1-1-0",
                            "VALUE": "80.45",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-2-1-0",
                            "VALUE": "165.51",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-3-1-0",
                            "VALUE": "245.97",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P2-1-1-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-2-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-3-1-0",
                            "VALUE": "1.416",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P4-1-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-2-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-3-1-0-0",
                            "VALUE": "-0.99",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P7-1-5-2-0",
                            "VALUE": "46407.46",
                            "UNIT": "k"
                        }]              
                },
                {
                  "CODE": "7",
                  "TIME": "16-05-2022 06:30:30",
                  "STATUS": "1",
                        "SNAPSHOT": [{
                            "PARAMCODE": "P1-2-1-1-0",
                            "VALUE": "119.54",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-2-1-0",
                            "VALUE": "131.03",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-3-1-0",
                            "VALUE": "241.37",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P2-1-1-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-2-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-3-1-0",
                            "VALUE": "0.966",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P4-1-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-2-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-3-1-0-0",
                            "VALUE": "-0.99",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P7-1-5-2-0",
                            "VALUE": "46407.79",
                            "UNIT": "k"
                        }]            
                }
                
              ]
            }
          }
        }
      }
    ]

   Expected Output:
  

从上面的两个文档中,我只需要满足以下条件的文档。 我想检查事件阵列,并仅检查使用单位:v的值检查值,然后检查 示例:(108.04-163.21)或(163.21-271.26)或(271.26-108.04)> 30

我该如何在mongoDB聚合中执行此操作 我如何在MongoDB聚合中实现这一目标

**Below is the input array** 

   [
      {
        "CDF": {
          "UTILITYTYPE": {
            "D1": {
              "G1": "12387835",
              "G22": {
                "NAME": "L1"
              }
            },
            "D5": {
              "EVENT": [
                {
                  "CODE": "13",
                  "TIME": "29-05-2022 13:26:00",
                  "STATUS": "0",
                        "SNAPSHOT": [{
                            "PARAMCODE": "P1-2-1-1-0",
                            "VALUE": "114.94",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-2-1-0",
                            "VALUE": "119.54",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-3-1-0",
                            "VALUE": "236.78",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P2-1-1-1-0",
                            "VALUE": "1.836",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-2-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-3-1-0",
                            "VALUE": "0.87",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P4-1-1-0-0",
                            "VALUE": "0.82",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-2-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-3-1-0-0",
                            "VALUE": "0.99",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P7-1-5-2-0",
                            "VALUE": "37923.31",
                            "UNIT": "k"
                        }]            
                },
                {
                  "CODE": "13",
                  "TIME": "29-05-2022 14:41:00",
                  "STATUS": "1",
                        "SNAPSHOT": [{
                            "PARAMCODE": "P1-2-1-1-0",
                            "VALUE": "119.54",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-2-1-0",
                            "VALUE": "124.13",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-3-1-0",
                            "VALUE": "243.67",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P2-1-1-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-2-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-3-1-0",
                            "VALUE": "0.888",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P4-1-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-2-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-3-1-0-0",
                            "VALUE": "-0.99",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P7-1-5-2-0",
                            "VALUE": "37923.64",
                            "UNIT": "k"
                        }]            
                }
              ]
            }
          }
        }
      },
      {
        "CDF": {
          "UTILITYTYPE": {
            "D1": {
              "G1": "12388215",
              "G22": {
                "NAME": "L2"
              }
            },
            "D5": {
              "EVENT": [
                {
                  "CODE": "7",
                  "TIME": "16-05-2022 04:28:21",
                  "STATUS": "0",
                       "SNAPSHOT": [{
                            "PARAMCODE": "P1-2-1-1-0",
                            "VALUE": "80.45",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-2-1-0",
                            "VALUE": "165.51",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-3-1-0",
                            "VALUE": "245.97",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P2-1-1-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-2-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-3-1-0",
                            "VALUE": "1.416",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P4-1-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-2-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-3-1-0-0",
                            "VALUE": "-0.99",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P7-1-5-2-0",
                            "VALUE": "46407.46",
                            "UNIT": "k"
                        }]              
                },
                {
                  "CODE": "7",
                  "TIME": "16-05-2022 06:30:30",
                  "STATUS": "1",
                        "SNAPSHOT": [{
                            "PARAMCODE": "P1-2-1-1-0",
                            "VALUE": "119.54",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-2-1-0",
                            "VALUE": "131.03",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P1-2-3-1-0",
                            "VALUE": "241.37",
                            "UNIT": "V"
                        }, {
                            "PARAMCODE": "P2-1-1-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-2-1-0",
                            "VALUE": "0",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P2-1-3-1-0",
                            "VALUE": "0.966",
                            "UNIT": "A"
                        }, {
                            "PARAMCODE": "P4-1-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-2-1-0-0",
                            "VALUE": "0",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P4-3-1-0-0",
                            "VALUE": "-0.99",
                            "UNIT": "NA"
                        }, {
                            "PARAMCODE": "P7-1-5-2-0",
                            "VALUE": "46407.79",
                            "UNIT": "k"
                        }]            
                }
                
              ]
            }
          }
        }
      }
    ]

   Expected Output:
  

From the two documents above i want only document that satisfies the below condition.
i want to check in Event array and check only check for values with UNIT:V and then check
example: (108.04 - 163.21) or (163.21 - 271.26) or (271.26 - 108.04) > 30

How do i do this in mongodb aggregation
How do i achieve this in mongodb aggregation

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文