MongoDB PHP使用条件聚合数据
我有两条不同的管道:有条件的MongoDB PHP使用条件聚合数据,php,mongodb,aggregation,Php,Mongodb,Aggregation,我有两条不同的管道:有条件的 $pipeline = array( array('$match' => array( 'currentStep' => 'CREATE')), array('$group' => array( '_id' => '$name', 'value' => array('$sum' => 1)
$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)
)));
如何将它们组合在一个$pipeline中以获得这样的输出:
_id - value_with_match_condition - value_without
为此,您需要将
$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)
))
);
这是未经测试的,但是与此通用表单匹配的东西应该可以工作。使用
$facet
聚合将在这里提供更好的性能