2016-08-25 4 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

Вы можете попробовать использовать оператор $unwind.

Как:

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

Я предполагаю, что вы хотите, чтобы добавить все transferred_amount из payout типа и вернуть полную сумму, поэтому использовать _id:null. при необходимости вы можете добавить fieldName для группы по

Смежные вопросы