2014-12-02 3 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

사용자가 동일한 게임을 두 번하고 싶을 수 있습니까? –

답변

1

$ unwind 문을 사용하면 여러 개의 희망 게임이있는 한 명의 사용자가 여러 명의 사용자로 표시됩니다. 이 데이터를 상상해

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

count 될 수 없다

하지만이 같은 데이터와 더불어, $unwind 당신에게 5 개 가지 서류를 줄 것이다 이상의 2. 그들을 요약하면 3 : b : 1, c : 1을 줄 것입니다.