根据时间对多个集合进行查询和排序。

问题描述 投票:0回答:1

我们的应用程序正计划使用MongoDB做报表。我们的报表是基于时间的(原始数据是不同的事件)。我们想为每一天创建一个单独的集合,这样当我们只需要查询、汇总和排序某一天的事件时,就不需要查询整个大集合。一个问题是这个设计是否合理。另一个问题是,如果我们需要在多个集合上对事件进行聚合和排序--例如一周,会发生什么情况?MongoDB支持这个吗?如果支持的话,应该如何做才能提高性能?

mongodb mongodb-query
1个回答
0
投票

我们正在考虑为每一天创建一个单独的集合,所以当我们只需要查询、汇总和排序某一天的事件时,我们将不需要查询整个大集合。 有一个问题是这个设计是否合理。

在使用适当的索引的情况下,mongoDB在处理一个非常大的集合时应该不会有问题,你可以在这里阅读更多内容。MongoDB索引

另一个问题是,如果我们需要对多个集合的事件进行汇总和排序,比如一周,会发生什么情况? MongoDB支持这个吗?如果支持的话--应该如何做才能提高性能?

如果你想走自己的路,你可以使用聚合管道和 $facet 来同时运行多个查询。然而这可能会变得有点棘手,因为你必须从你的查询参数中生成集合名称。事实上,我认为这可能会比较慢,而且更容易出错。所以我不推荐这种方法。

© www.soinside.com 2019 - 2024. All rights reserved.