来自两个不同匹配日期的mongodb聚合

时间:2016-03-16 12:18:03

标签: mongodb

我需要在集合A上构建聚合。 一些字段将聚合最多5分钟匹配,其他字段最多匹配1小时。 如果我在管道中添加步骤以匹配5分钟,那么我不能有1小时来计算另一组。 我如何在同一个查询中做到这一点,这样我就可以在一个plcace中构建所有结果。

提前致谢...

1 个答案:

答案 0 :(得分:1)

  

将所有结果都集中在一个地方

可以这样做,但它相当复杂。使用两个聚合来执行此操作要容易得多,这两个聚合都将结果输出到新集合中以保存这些结果。然后,您仍然可以在没有复杂查询的情况下将结果放在一个位置。

如果你真的想用一个查询来做,那么你可以这样做:

  1. 汇总至五分钟级别
    • 处理五分钟数据,就像您只查询它一样
    • 开始汇总小时数据
  2. 汇总到小时级别
    • 将五分钟数据推送到数组
    • 计算小时聚合
  3. 这导致的文件分别代表一小时,并有一个数组代表该小时内十二五分钟时段的数据。

    您需要记住的一件事是,有些事情,比如平均值,应该在完成聚合后计算。您最后可以使用额外的$project来执行此操作。