У меня есть таблица заказов:
{ "_id" : 1, "customer" : "1", price: 0 }
{ "_id" : 2, "customer" : "1", price: 100 }
{ "_id" : 3, "customer" : "1", price: 120 }
{ "_id" : 4, "customer" : "2", price: 150 }
Я хочу получить минимальную стоимость заказа для каждого клиента.
$builder
->facet()
->field('customerOrders')
->pipeline(
$dm->createAggregationBuilder('Document\Order')->group()
->field('id')
->expression('$customer')
->field('lowestValue')
->min('$price')
->field('highestValue')
->max('$price')
);
Приведенный выше код работает.
{ "_id" : "1", "lowestValue" : 0, "highestValue" : 120 }
{ "_id" : "2", "lowestValue" : 150, "highestValue" : 150 }
Я хочу игнорировать ордера с ценой 0 или ноль.
Желаемый результат:
{ "_id" : "1", "lowestValue" : 100, "highestValue" : 120 }
{ "_id" : "2", "lowestValue" : 150, "highestValue" : 150 }
Возможно ли это? Могу ли я использовать $ cond (агрегат)?
{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }
https://docs.mongodb.com/manual/reference/operator/aggregation/cond/
MongoDB 4.2 MongoDB ODM 2.0.3