PHP Mongo Aggregation $ cond if / then语法

时间:2014-12-01 21:43:16

标签: php mongodb aggregation-framework

我有一个$项目作为普通的MongoDB查询工作,但我很难搞清楚如何为PHP-Mongo驱动程序编写它。这就是我所拥有的:

db.collection.aggregate(
   {
      $project:
            {
            projectField: {
                $cond: {
                    if: { $eq: [ "$field", "-" ] }, 
                    then: "$otherfield", else: "Blah" }
                 }

            }
      }

)

我的具体问题是如何处理"如果"然后"然后"使用PHP语法。我已经google了,但我是MongoDB和PHP驱动程序的新手,我不确定我是否可以使用Google搜索正确的条款。

谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用$cond表达式的简化语法:

{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }

因此,语句可以细分并替换如下:

$if => array('$eq' => array('$field','-'))

$cond => array($if,'$otherfield','Blah')

$projectField => array('$cond' => $cond)

$pipeline => array('$project' => array('projectField' => $projectField))

$out = $c->aggregate($pipeline);