mongodb — Синтаксис PHP Mongo $ cond if / then

У меня есть $ проект, работающий как обычный запрос MongoDB, но мне трудно понять, как написать его для драйвера PHP-Mongo. Вот что у меня есть:

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

}
}

)

Моя конкретная проблема заключается в том, как бороться с «если» и «тогда», используя синтаксис PHP. Я погуглил, но я новичок в MongoDB и PHP-драйвере и не уверен, что я даже прибегаю к поиску правильных терминов.

Спасибо!

3

Решение

Вы можете использовать упрощенный синтаксис для $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);
4

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

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