Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 基于日期查询时间序列数据_Mongodb_Aggregation Framework - Fatal编程技术网

Mongodb 基于日期查询时间序列数据

Mongodb 基于日期查询时间序列数据,mongodb,aggregation-framework,Mongodb,Aggregation Framework,如果我有下面的文档,我想返回相同的文档,但以日期字段中的分钟为基础,每小时返回一次。1 有人知道如何动态地做到这一点吗?如果日期为0分钟,我希望返回每小时.0。一直到第59分钟 { "_id" : "08062017/cpu", "date" : ISODate("2018-04-11T02:01:00.000Z"), "metadata" : { "host" : "localhost",

如果我有下面的文档,我想返回相同的文档,但以日期字段中的分钟为基础,每小时返回一次。1

有人知道如何动态地做到这一点吗?如果日期为0分钟,我希望返回每小时.0。一直到第59分钟

{
        "_id" : "08062017/cpu",
        "date" : ISODate("2018-04-11T02:01:00.000Z"),
        "metadata" : {
                "host" : "localhost",
                "metric" : "cpu"
        },
        "hourly" : {
                "0" : {
                        "total" : 234,
                        "used" : 123
                },
                "1" : {
                        "total" : 234,
                        "used" : 123
                }
        }
}
结果:

   {
        "_id" : "08062017/cpu",
        "date" : ISODate("2018-04-11T02:01:00.000Z"),
        "metadata" : {
                "host" : "localhost",
                "metric" : "cpu"
        },
        "hourly" : {
                "0" : {
                        "total" : 234,
                        "used" : 123
                }

        }
}

你在这里的意思还不太清楚。这种结构的要点是,随着时间的推移,您为
total
used
编写数据。通常,这已经通过使用诸如
$inc
之类的运算符进行了“累积”。同样,当你说“按分钟”的时候,你又一次不清楚了,但是你似乎认为这些总数可以“分解”到它们不能分解的地方。从外观上看,此数据中的
date
字段可能是在当天的“设置时间”创建的,因为当天本身“滚动”,并为当天创建了一个新文档。这是这些结构的典型工作方式。问题中显示的更多文档可能会使其更清晰,但我怀疑它们都显示相同的
凌晨1点
时间,即文档的创建时间,而与底层度量的记录位置无关。看起来有点像是别人写的代码创建的,而你正试图理解它。但你没有理解为什么一开始就这样做。如果你想要“按分钟”的话,你可能需要一个与这个不同的数据源。我添加了一个编辑,我只想过滤掉每小时嵌套的对象。查询应该从日期中的分钟中筛选出适当的嵌套对象。这只是一个例子,实际上我的代码非常复杂,所以我不想在这里复制粘贴一大堆东西。让我们简单地说,集合中有一个文档是上面这样硬编码的。如何根据日期字段中的分钟数获得我提供的结果。您没有编写最初编写结构的代码,是吗?因为就像我已经说过的,你似乎没有抓住重点。你不知道;我不需要重复你的问题,只要看看我写的就行了。你不能从中得到一分钟。你没有答案,因为你要求别人提取一些不存在的东西。我没有写代码,这只是一个例子。如果“日期”:0会有帮助吗