【发布时间】:2019-12-07 03:43:26
【问题描述】:
这是我们新应用中的一个示例文档,用于在 MongoDB 子文档中存储时间序列数据,
{
"_id" : ObjectId("5dcb6cacfb315e66b551a1a0"),
"youtubeId" : "bIWShN9rKQU",
"views" : [
{
"count" : 17506,
"at" : ISODate("2019-08-12T13:31:00.002Z")
},
{
"count" : 29576,
"at" : ISODate("2019-11-14T13:32:00.216Z")
},
{
"count" : 29579,
"at" : ISODate("2019-11-15T13:33:00.197Z")
},
{
"count" : 29582,
"at" : ISODate("2019-11-16T13:34:00.192Z")
},
{
"count" : 29586,
"at" : ISODate("2019-11-17T13:35:00.180Z")
},
{
"count" : 29595,
"at" : ISODate("2019-11-19T13:36:00.190Z")
},
{
"count" : 29597,
"at" : ISODate("2019-11-20T13:37:00.206Z")
},
{
"count" : 29604,
"at" : ISODate("2019-11-21T13:38:00.228Z")
},
{
"count" : 29606,
"at" : ISODate("2019-11-22T13:39:00.218Z")
},
{
"count" : 29613,
"at" : ISODate("2019-11-24T13:40:00.201Z")
},
{
"count" : 29619,
"at" : ISODate("2019-11-25T13:41:00.250Z")
},
{
"count" : 29624,
"at" : ISODate("2019-11-27T13:42:00.103Z")
},
{
"count" : 29636,
"at" : ISODate("2019-11-29T13:43:00.128Z")
}
]
}
现在,我想在移动应用程序使用的 Web 服务中发送这些数据以绘制图形,但我只想在 views 数组中获取 10 个对象,这应该是整个数据集的表示关于时间。但不管数组的大小,它应该是 10 个数据。
如何通过使用at 时间戳字段从整个数据集中获取 10 个数据来创建整个数据的表示?
【问题讨论】:
-
你能解释一下这些是什么意思吗:“......我想在视图数组中只获取 10 个对象......”,“但它应该是 5 个数据,无论大小如何数组”和“如何从整个数据集中获取 10 个数据...”。可以举个例子吗?
-
@prasad_ 在上面的示例中,views 是一个对象数组,它的时间从 2019-08-12T13:31:00.002Z 到 2019-11-29T13:43:00.128Z(13 条记录为 1 / 分钟),因此 5 个样本意味着大约每 2 分钟一个记录
-
我发布了一个聚合查询;请告诉我它是如何工作的。
标签: mongodb time-series aggregation-framework timeserieschart