У меня есть $ проект, работающий как обычный запрос MongoDB, но мне трудно понять, как написать его для драйвера PHP-Mongo. Вот что у меня есть:
db.collection.aggregate(
{
$project:
{
projectField: {
$cond: {
if: { $eq: [ "$field", "-" ] },
then: "$otherfield", else: "Blah" }
}
}
}
)
Моя конкретная проблема заключается в том, как бороться с «если» и «тогда», используя синтаксис PHP. Я погуглил, но я новичок в MongoDB и PHP-драйвере и не уверен, что я даже прибегаю к поиску правильных терминов.
Спасибо!
Вы можете использовать упрощенный синтаксис для $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);
Других решений пока нет …