2014-12-02 246 views
-1

我有一個查詢,當我驗證它時,我看到count命令從彙總結果返回不同的結果。mongo db計數不同於彙總總計

我有子文檔的數組,像這樣:

{ 
    ... 
    wished: [{'game':'dayz','appid':'1234'}, {'game':'half-life','appid':'1234'}] 
    ... 
} 

我試圖查詢的集合中的所有遊戲的計數,並伴隨着多少次,我發現計數返回名稱遊戲名稱。

,如果我去

db.user_info.count({'wished.game':'dayz'}) 

返回106值和

db.user_info.aggregate([{'$unwind':'$wished'},{'$group':{'_id':'$wished.game','total':{'$sum':1}}},{'$sort':{'total':-1}}]) 

返回110

我不明白爲什麼我的數是不同的。我能想到的唯一的事情就是它與數據在一個子文檔數組中而不是在一個數組中或者在一個文檔中。

+0

用戶可能希望兩次玩同一遊戲嗎? – 2014-12-02 01:58:05

回答

1

$ unwind語句將導致一個具有多個希望遊戲的用戶顯示爲多個用戶。試想一下,這樣的數據:

{ 
_id: 1, 
wished: [{game:'a'}, {game:'b'}] 
} 
{ 
_id: 2, 
wished: [{game:'a'}, {game:'c'}, {game:'a'}] 
} 

count永遠不能超過2個。

但與此相同的數據,一個$unwind會給你5個不同的文件。總結它們會給你一個:3,b:1,c:1。