一对多Mongo策略,对两个集合都进行查询

时间:2013-04-23 09:11:36

标签: mongodb database-design nosql

我有两个集合:一个包含~7.600,000个文档,其中包含有关可用行程的信息,另一个包含约5000个文档,其中包含有关地区,城市和国家/地区数据的酒店信息。旅行集合具有某个酒店的id字段。

我的问题是,我必须查询两个集合以获取有关某些旅行的信息:来自酒店集合的位置信息以及其他信息,如价格,人数等来自旅行集合。

我已经阅读了关于合并两个集合的mapreduce策略,但我认为它不适合我的情况,因为如果我使用酒店ID链接它们,它将只创建5000个文档?有可能吗?

另一种方法是在旅行收集中嵌入酒店信息,但在这种情况下我害怕更新酒店信息。

请给我一些建议,并告诉我哪种方法最好?

1 个答案:

答案 0 :(得分:0)

你有很多选择。这就是决定在哪里“加入”数据。选项:

  1. 加入前端。也许先带回所有行程,然后使用AJAX电话懒洋洋地加载酒店信息。 (假设一个Web应用程序)。重点是,两个电话可能不是最糟糕的事情!

  2. 在Mongo中使用map / reduce可以根据需要输出数据。它不会实时工作,但它会给你正确的结果。它不限于5,000份文件。您可以从更大的旅行系列开始,带来您需要的东西。它非常灵活。

  3. 嵌入酒店信息。请注意,如果酒店信息没有经常更改,您只想嵌入酒店信息。如果它不断变化,我会考虑保留原样。

  4. 对于我使用Mongo进行的大量工作,我发现两次调用并不是那么糟糕 - 特别是在处理快速变化的数据时。