2013-10-24 3 views
0

"paid_amount"와 "user_id", "real_currency_spend"및 "paid_currency"의 합계를 집계하려고합니다.Mongo DB 집계 및 그룹 집계 함수를 사용하는 집계

{$match: {"paid_currency_type": "real_currency", "paid_amount": {$gt: 0}}} 
{$group: {_id:"$user_id", total: {$sum : "$paid_amount"}}} 

전류 출력 :

아이디어 등 USD, GBP,

현재 코드로 엔 "paid_amount"을 계산 피하기 위해 통화 유형 (에 의해 사용자가 합계를 얻을 수 있습니다

_id: 1121749754875670248  
total: #.## 

원하는 출력 :

_id: ##### (equal to user_id) 
USD: #.## 
Yen: #.## 
Cur: #.## 

real_currency_name의 각 통화 유형을 사용하여 필드 값을 구성하는 컬렉션의 사용자 당 필드 이름과 총계를 구성합니다.

이상적으로 $push을 사용하여 id 당 배열 형식으로 통화를 넣고 싶지는 않지만 수행해야하는 경우 ... 수행해야합니다.

+6

예제 문서를 제공해 주시겠습니까? – zero323

+0

다시 시도 할 때 나는 오늘 아침에 아주 가까운 곳에 다가 섰다. {$ group : {_id : "$ paid_currency_name", 총계 : {$ sum : "$ paid_amount"}}} – andrewwowens

답변

0

내가 MongoDB에 새로운 오전,하지만 난 $project에 대한 가서 (코드 체크 다만 "힌트"를 참고하시기 바랍니다) 조건 문장을 사용 :

{$match: {"paid_currency_type": "real_currency", "paid_amount": {$gt: 0}}} 
{$group: {_id:"$user_id", curr: 'real_currency', total: {$sum : 'paid_amount'}} 
{$project: {_id:'$_id',USD:{{$cond: [{$eq:{'$curr', 'USD']}, '$total', $multiply[$total,$change.usd.real_currency]}}, 
         Yen:{ you know what I mean ;-)}, 
         Cur:{}}} 

내가 외부 개체의 $를 사용주의 변화, 통화에 변화하는 비율을 포함 할 것입니다. 나는 MongoDB를 처음 사용하기 때문에 집계에 외부 변수를 추가하는 방법을 정확히 모른다. (어쩌면 내가 사용했던 것처럼 사용할 수도 있지만 확실하지는 않다.)

각 통화에 대해 집계를 실행하는 경우, 내가 작성한 조건 연산자를 잊어 버리고 방금 $ 프로젝트 아이디어를 얻고 세 가지 통화를 표시해야합니다 (하나는 데이터에서, 다른 하나는 $ 곱하기로 변경 율).

희망이 도움이됩니다.