2012-07-11 50 views
0

模型籤:MongoDB的組由/不同的查詢

checkin 
    _id 
    interest_id 
    author_id 

我已經得到的簽入集合(通過簡單的「查找」查詢解決) 我想指望籤的數量每個興趣。 是什麼讓這項任務變得更加困難 - 我們應該將一個人和一個興趣的兩個簽到計爲一次簽入。

AFAIK,mongo中的組操作通過map/reduce查詢來執行。我們應該在這裏使用它嗎?我用這種方法得到的唯一想法是聚合每個感興趣的用戶數組,然後返回這個數組的長度。

編輯我最終沒有使用map/reduce,allthough Emily的答案很好地工作&很快。 我必須從過去的60分鐘內只選擇簽入,並且不應該有太多結果。所以我只是把它們全部交給Ruby驅動程序,並且在ruby方面進行所有計算。速度稍慢,但更具可擴展性且易於理解。

最好, 羅馬

回答

1

地圖減少很可能會去這樣做的方式,你可以得到理想的結果有兩個地圖降低。

在第一個中,您可以刪除重複的author_id和interest_id對。

  • 鍵將被AUTHOR_ID和interest_id
  • 值將被checkin_id

第二地圖減少由給定AUTHOR_ID也只是簽入的數量的計數。

  • 鍵將AUTHOR_ID
  • 值將checkin_id數
+0

謝謝你,但是,我想,你的,而不是給定的** ** interest_id意味着簽到次數的計數AUTHOR_ID? – 2012-07-11 16:10:33

+0

是的,我很抱歉,我剛剛重讀了你的問題,你會通過interest_id而不是author_id來計數。 – 2012-07-11 17:13:09