我可能在这里遗漏了一些东西,但我相信你想要一个集合:
{event_type, event_time, data_point1, data_point2}
这样您就可以执行查询。该文档应该很容易满足您的两个查询,后者是使用聚合框架 ( $avg
) 完成的。
这将为您提供完全自由形式的查询。
我想你可能刚刚被链接的帖子弄糊涂了(http://www.quora.com/Time-Series/What-is-the-best-way-to-store-time-series-data-in-MongoDB)。它显示了一种预聚合形式,它将形成您的数据的顶级结果,这些结果通常很难按需进行。
当然,正如您所注意到的,这种方法会限制查询能力,但是时间序列可能会变得非常大,而且我不确定聚合框架是否可以在您的自由格式数据集上进行更复杂的查询。这就是预聚合的用武之地。它为您的低级数据提供了一些顶级数据,有效地使聚合更容易。
因此,在那篇文章中,您可以看到@Jared 实际上展示了他拥有的第一个收藏,它是以下内容的详细收藏:
{
timestamp: "Sun May 02 2010 19:07:40 GMT-0700",
metric1: 10,
metric2: 20,
}
这将是您的详细信息集合,其中包含:
{event_type, event_time, data_point1, data_point2}
您可以以自由形式查询的集合,然后@Jared 继续展示如何创建以将数据分级到该详细信息集合,以使其他聚合更容易。
所以我不确定问题出在哪里,详细信息集合存储所有data_points
内容并允许您执行免费查询,当然前提是您有正确的索引。