Mongodb 基于日期查询时间序列数据
如果我有下面的文档,我想返回相同的文档,但以日期字段中的分钟为基础,每小时返回一次。1 有人知道如何动态地做到这一点吗?如果日期为0分钟,我希望返回每小时.0。一直到第59分钟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",
{
"_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会有帮助吗