2016-08-25 7 views
0
"payments": [ 
      { 
      "_id": "57bea755acfbfc4e37c3dfdf", 
      "user": "57b1c3d2d591a46848c25f45", 
      "transferred_amount": 10, 
      "transaction_type": "refund", 
      "reason": "#1968 shop box refunded", 
      "__v": 0 
      }, 
      { 
      "_id": "57beb883acfbfc4e37c3dfe0", 
      "user": "57b1c3d2d591a46848c25f45", 
      "transferred_amount": 10, 
      "transaction_type": "payout", 
      "reason": "#1968 shop box refunded", 
      "__v": 0 
      } 
     ] 

이것은 내 DB 데이터입니다.

Model.aggragate().project({ 
      paid_out_amount: { 
      $sum: { 
       $cond: [{ 
        $eq: ['$payments.transaction_type', 'payout'] 
       }, 0, '$payments.transferred_amount'] 
      } 
     } 
}) 

데이터를 가져 오는 노드 코드입니다. 나는 총액 지불금 금액만을 혼자서 필드에 저장하려고합니다. $ cond는 항상 0을 반환합니다. 누구든지 나를 도와 줄 수 있어요.

답변

0

$unwind 연산자를 사용해보세요.

등 :

Model.aggregate([ 
{ $unwind: "$payments" }, 
{ 
    $group: 
     { 
      _id: null, 
      paid_out_amount: { $sum: {$cond: [ { $eq: [ "$payments.transaction_type", 'payout' ] }, '$payments.transferred_amount', 0 ] } } 
     } 
} 
]); 

난 당신이 모든 transferred_amountpayout 유형을 추가하고 _id:null를 사용하는 이유의 총 합계를 반환하려는 경우를 가정 해 보겠습니다. 필요에 따라 그룹에 fieldName을 추가 할 수 있습니다.