2017-09-15 5 views
0

mongo 셸을 사용하여 일련의 필드에서 동일한 값을 가진 문서의 합계를 찾으려고합니다.이 샘플 문서는mongo를 사용하여 동일한 값을 가진 필드 집합에 총계를 얻는 방법

입니다.
{ 
"id" : "1", 
"date" : ISODate("2017-04-29T00:00:00.000Z"), 
"amount" : 697, 
"name" : "vendor1" 
} 

{ 
"id" : "2", 
"date" : ISODate("2017-04-29T00:00:00.000Z"), 
"amount" : 380 
"name" : "vendor2" 
} 

{ 
"id" : "2", 
"date" : ISODate("2017-04-29T00:00:00.000Z"), 
"amount" : 380, 
"name" : "vendor2" 
} 

{ 
"id" : "3", 
"date" : ISODate("2017-04-29T00:00:00.000Z"), 
"amount" : 702, 
"name" : "vendor3" 
} 

{ 
"id" : "3", 
"date" : ISODate("2017-04-29T00:00:00.000Z"), 
"amount" : 702, 
"name" : "vendor3" 
} 

의 I는 시도 쿼리입니다은

db.results.aggregate([ 
{$group:{'_id':{name:'$name', id:'$id', date:'$date', amount:'$amount', 
count:{'$sum':1}}}}, 
{$match:{'count':{'$gt':1}}}]) 

는하지만 0 기록을 가져. 또한 얼마나 많은 문서가 발견되었는지 알고 싶습니다. 그래서 문제를 해결하는 방법을 궁금합니다.

+1

당신은 넣어'잘못된 장소에서 count'. 실제로 오류가 발생해야합니다. 대신 '{$ group : {'_id ': {name :'$ name ', id :'$ id ', 날짜 :'$ date ', 금액 :'$ amount '}, 개수 : {'$ sum ' 1}}}'$ group' 파이프 라인에 대해. –

+0

@NeilLunn thx, 이제 작동합니다. 또한 집계를 사용하여 생성 된 결과 문서의 수를 알고 싶습니다. 어떻게 수행합니까? – daiyue

+0

검색어의 수를 합산하는 방법은 무엇입니까? – daiyue

답변

1

이것을 사용할 수 있습니다.

db.results.aggregate([ 
{ $group:{'_id': {name:'$name', id:'$id', date:'$date', amount:'$amount'} 
       , count: {$sum: 1} } } 
]) 

결과 :

{ "_id" : { "name" : "vendor3", "id" : "3", "date" : ISODate("2017-04-29T00:00:00Z"), "amount" : 702 }, "count" : 2 } 
{ "_id" : { "name" : "vendor2", "id" : "2", "date" : ISODate("2017-04-29T00:00:00Z"), "amount" : 380 }, "count" : 2 } 
{ "_id" : { "name" : "vendor1", "id" : "1", "date" : ISODate("2017-04-29T00:00:00Z"), "amount" : 697 }, "count" : 1 }