У меня есть коллекция монго, в которой мне нужно сгруппировать данные по payment_id, далее мне нужно получить сумму total_payable
.total_payable amount
сделан из total_payable+extra_book_price
.Нормальное дополнение работает, но я хочу нацелиться на сценарий, в котором extra_book_price
, который находится внутри массива сведений, пуст.До сих пор я пытался $exists
и ifNull
, но они не работают.
Любая помощь приветствуется.
Также, если extra_book_price
не существует, мне нужно вернуть *Только 1012 *.
[
'$match'=>[
'bookfair_id'=>110
]
],
[
'$group'=> [
'_id'=>'$payment_id',
'card_pay'=> ['$sum'=> '$total_payable' ],
'count'=>[
'$sum'=>[
'$cond'=> [
'if'=> ['$ifNull'=>['$extra_books_detail',true]],
'then'=>['$total_payable'],
'else'=>['$add'=> ['$total_payable','$extra_books_detail.total_payable'] ]
]
]
]
]
],
DUMMY DATA
{
"_id":23761,
"gross_total":2499,
"total_payable":2499,
"bookfair_id":110,
"payment_id":2,
"order_detail":[
{
"product_id":"5c63d418ae1db123d8048276",
"amount":2499,
"quantity":1,
"status":1
}
],
"extra_books_detail":{
"employee_id":0,
"total_payable":"100",
"payment_id":1,
"detail":[
{
"amount":"100",
"quantity":1
}
]
},
"status":1
}
AND IF EXTRA BOOK DETAIL
пусто
{
"_id":1,
"gross_total":350,
"total_payable":350,
"bookfair_id":300,
"payment_id":1,
"order_detail":[
{
"product_id":"5c4f2a5725956b7e8e7ddba8",
"condition_id":"5c5562df25956b10c02d06d3",
"amount":350,
"quantity":1,
"status":1
}
],
"extra_books_detail":[
],
"status":1,
"date_added":"2018-01-06T06:14:04.000Z"
}