1

我正在创建有关mongodb使用 java 的报告。所以在这里我需要使用 map reduce 来创建报告。我在生产中有 3 个副本。

对于报告查询,我不想向 primary 提出请求mongo database。我只想向次要副本发出请求,所以在这里如果我们使用 map reduce 它将创建一个临时集合。

1) 如果我将读取首选项设置为使用 map reduce 的报告的次要选项,会有什么问题吗?
2) 会在辅助副本上创建临时集合吗?
3) 由于我不想在主数据库上创建流量,是否有任何其他方法可以使用辅助副本进行报告?
4)由于拥有大量数据,我会得到正确的预期结果吗?

4

1 回答 1

2

可能最简单的方法是直接连接到辅助节点,而不是使用 ReadPreference.SECONDARY_ONLY 连接到副本集。在这种情况下,它肯定会在辅助节点上创建一个临时的,并且您应该得到正确的结果(当然!)。

不过,我还建议您查看聚合框架,因为它比 Map Reduce 作业更快并且通常更易于使用和调试。它没有那么强大,但我还没有找到无法使用聚合框架来满足聚合和报告需求的情况。

于 2013-07-12T09:12:13.757 回答