2011-10-04 309 views
1

是否有可能像查詢一樣運行MongoDB命令來獲取其他數據或在MongoDB的MapReduce命令中使用from進行更新。無論是在地圖或Reduce功能?在Map/Reduce中運行MongoDB查詢

這是完全荒謬可笑嗎?目前我有一些使用MongoDB DBReference命令引用單獨集合的文檔。

感謝您的幫助!

回答

4

是否可以在MongoDB的MapReduce命令中運行MongoDB命令。

從理論上講,這是可能的。在實踐中,這有很多問題。

  • 問題#1:指數工作。 M/R已經非常強烈並且記錄不準確。添加查詢很容易使M/R失控。
  • 問題#2:上下文。設想你正在運行一個分解的M/R,並且你正在查詢一個未硬化的集合。目前的環境是否有這種聯繫?

你基本上試圖實現JOIN邏輯,而MongoDB沒有連接。相反,您可能需要通過在幾組數據上運行幾個循環來在幾個階段中構建最終數據。

+0

謝謝你的回覆。基本上,我有一種情況,我有一組商品給商家,我想對產品價格進行一些整合。附在產品上我有來自DB Ref的MerchantID。我的排放鑰匙是商家ID,然後發出產品價格/數量。只是爲了收集最終結果集合,我想添加商戶名稱而不是商戶ID。商家名稱存儲在一個單獨的集合中。 – whobutsb

+1

就你而言,你有兩個選擇。 (1) - >使商品名稱與商品數據非規格化並存儲。 (2) - >在M/R之後,用商家名稱更新輸出集合。採取額外的步驟,但你會得到正確的結果,並且更容易分片。選項(3) - >在對數據運行查詢時查詢所需的名稱。這是一個手動連接,但如果你想在該屏幕上顯示的不僅僅是名稱,反正你最終會這樣做。 –