2013-04-23 48 views
0

我有两个集合:一个包含〜7.600.000个文档,其中包含有关可用行程的信息,另一个包含〜5000个文档,其中包含有关区域,城市和国家/地区数据的酒店信息。旅行集合有特定酒店的ID字段。一对多Mongo战略,同时查询两个集合

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

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

另一种方法是在旅行收藏中嵌入两个酒店信息,但在这种情况下恐怕更新酒店信息。

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

+0

看看:看:http://docs.mongodb.org/manual/reference/database-references 这是一个没有解决方案,只是方式... – 2013-04-23 09:25:51

+0

所以你建议做两个查询? – 2013-04-23 09:35:09

+0

由于出行可能不会包含大量这些连接,因此需要测试从客户端到数据库的查询性能。平均需要多长时间?你的用户可以接受吗?我认为他们应该有不同的文件。您甚至可以考虑在客户端添加一个定时缓存,使用较小的数据集以避免对频繁更改的数据进行不必要的调用。 – WiredPrairie 2013-04-23 10:57:40

回答

0

你有很多选择。这完全取决于“加入”数据的位置。选项:

  1. 加入前端。也许先带回所有行程,然后使用AJAX调用来延迟加载酒店信息。 (假设一个Web应用程序)。问题是,两个电话可能不是最糟糕的!

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

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

对于我用Mongo做的很多工作,我发现两个调用并不是很糟糕 - 特别是在处理快速变化的数据时。