dongyishe6689 2018-09-06 06:44
浏览 69
已采纳

MongoDB PHP使用条件聚合数据

I have 2 different pipelines: with condition

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

and without

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

How combine them in one single $pipeline in order to get such output:

_id - value_with_match_condition - value_without
  • 写回答

1条回答 默认 最新

  • dongshuql24533 2018-09-06 07:21
    关注

    In order to do this, you will need to combine the use of $sum with $cond. For instance, it might look something like this:

    $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)
        ))
    );
    

    This is untested, but something matching this general form should work.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮