2011-11-22 76 views
0

例如聯接如SQL Server,我們有兩個集合使MongoDB中

users {userId, firstName, lastName}

votes {userId, voteDate}

我需要它有超過20票一天的所有用戶的名稱的報告。

如何編寫查詢以從MongoDB獲取數據?

+0

可能的重複[如何在MongoDB中執行SQL Join等價物?](http://stackoverflow.com/questions/2350495/how-do-i-perform-the-sql-join-equivalent-in- MongoDB中) –

回答

0

我現在無法提供更全面的答案,但您應該可以使用MapReduce來實現此目的。 Map步驟將返回擁有超過20票的用戶的userIds,reduce步驟將返回firstName和lastName,我認爲......看一看here

2

最簡單的方法是緩存用戶文檔中每個用戶的投票數。然後你可以用一個查詢來得到答案。

如果您不想這樣做,則將結果減少到結果集合中,然後查詢該集合。然後,您可以運行增量式地圖縮小,只計算新的投票,以保持您的結果是最新的:http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-IncrementalMapreduce

2

您不應該真的試圖與Mongo進行連接。如果你是以關係方式設計你的模式。

在這種情況下,我會將投票存儲爲用戶的嵌入式文檔。

在一些使用嵌入式文檔的場景中是不可行的,在這種情況下,我會做兩個數據庫查詢並在客戶端連接結果,而不是使用MapReduce。