MongoDB PHP Агрегирование данных с условием

У меня 2 разных трубопровода: с условием

$pipeline = array(
array('$match' => array(
'currentStep' => 'CREATE')),
array('$group' => array(
'_id' => '$name',
'value' => array('$sum' => 1)
)));

и без

$pipeline = array(
array('$group' => array(
'_id' => '$name',
'value' => array('$sum' => 1)
)));

Как объединить их в один $ конвейер, чтобы получить такой результат:

_id - value_with_match_condition - value_without

0

Решение

Для этого вам необходимо сочетать использование $sum с $cond, Например, это может выглядеть примерно так:

$pipeline = array(
array('$group'=>array(
'_id'=>'$name',
'sum_matching'=>array(
'$sum'=>array('$cond'=>array(
'if'=>array('$eq'=>array('$currentStep', 'CREATE')),
'then'=>1,
'else'=>0
)),
),
'sum_all'=>array('$sum'=>1)
))
);

Это не проверено, но что-то, соответствующее этой общей форме, должно работать.

0

Другие решения

Других решений пока нет …