2013-04-23 47 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做的很多工作,我發現兩個調用並不是很糟糕 - 特別是在處理快速變化的數據時。