2016-08-25 116 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 ] } } 
     } 
} 
]); 

我假设你要添加的所有payouttransferred_amount并返回总和,这就是为什么使用_id:null。如果需要你可以添加fieldName为