首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用求和/匹配的MongoDB聚合问题

使用求和/匹配的MongoDB聚合问题
EN

Stack Overflow用户
提问于 2022-11-30 20:19:17
回答 1查看 34关注 0票数 0

我收集了以下类型的文件:

代码语言:javascript
复制
{
  device: integer,
  date: string,
  time: string,
  voltage: double,
  amperage: double
}

数据作为时间序列数据插入,并且一个单独的进程聚合和平均结果,这样这个集合每5分钟就有一个单一的文档。即。时间是00:05:00,00:10:00等。

我需要搜索一组特定的设备(通常每次5-10 )。我需要电压为>= 27.0,我需要搜索一个单一的日期。

这部分很容易,但我只需要找到数据时,所有5-10系统在一个时间间隔满足27.0的要求。我不知道该怎么处理这个要求。

一旦我知道了这一点,我就需要找到特定的设备分组,这些设备的安培字段之和最小,我需要返回发生这种情况的时间。

因此,让我们假设我将搜索5个设备。我需要找到所有5个设备都有一个电压>= 27.0和安培场之和是最低的时间。

我不知道如何要求所有的设备都满足电压要求,然后对这组设备,然后找出时间,当安培总和是最低的。

任何问题都会很好。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-01 01:23:16

您需要使用$all操作符。

注:提供有关“安培场之和最低”的更多信息。

代码语言:javascript
复制
db.collection.aggregate([
  {
    $match: {
      device: { $in: [1, 2, 3] },
      date: "2022/10/01",
      voltage: { $gte: 27.0 }
    }
  },
  {
    $group: {
      _id: "$time",
      device: {
        "$addToSet": "$device"
      },
      amperage: {
        $min: "$amperage"
      },
      root: {
        $push: "$$ROOT"
      }
    }
  },
  {
    $match: {
      device: { $all: [ 1, 2, 3 ] }
    }
  }
])

MongoPlayground

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74633686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档