2014-05-17 55 views
1

我試圖達到以最低廉的成本和最佳的性能如下: (請想以百萬計的文檔):
我有這個集合: Followhip獲取關注者列表和羯羊當前用戶跟隨他們或不

{ 
「followee」: 12345, 
「follower」:  54321, 
「start」:  ISODate(「2013-08-21T12:34:00」), 
「last」:  ISODate(「2013-08-23T06:00:00」), 
「end」:  ISODate(「2013-08-23T07:50:23」) 

}

最後是當follower是繼​​
現在的個人資料頁上,我得到的所有關注者(限10)上次掃描日期,但我也想檢查當前用戶是否關注關注者。
天真的解決方案是查詢foreach追隨者,與標準:'追隨者'=當前用戶和'followee'=追隨者,如果結果爲空,則返回false,否則返回true。

我的問題是:有更好的解決方案嗎?像MAP減少或什麼的,我在MongoDB中一個新手,所以也許有人可以幫助我在這裏
非常感謝

回答

1

可以使用$in operator所以你不必造成十個查詢,但只有一個,例如

// currentProfile.displayedFollowerIds = [ 32434, 54354, 656536, ... ] 
db.followers.find({ followee : currentUser.Id, 
        follower: {$in : currentProfile.displayedFollowerIds } }); 

MongoDB中的映射/減少不用於臨時查詢; Map/Reduce操作在MongoDB中有相當多的開銷,不應該像查詢一樣使用。

如果您有複雜的查詢,您可能需要查看aggregation framework

+0

+1將查詢數從10減少到1 – Sekai

相關問題