Mam problemy wielokrotne zagnieżdżanie dwóch operandów $or
operacje w ramach działania $and
. Podsumowanie this discussion brzmi podobnie, czego potrzebuję, ale nie mogę go uruchomić. Oto JavaScript tego, co próbuję wykonać:
db.Business.find(
{
$and:
[
{ $or: [{nm: /American/}, {dsc: /American/}] },
{ $or: [{nm: /Mega/}, {dsc: /Mega/}] }
]
}
)
Działa to w powłoce interaktywnej MongoDB.
A oto niektóre PHP, który wygląda ok do mnie, ale nie działa (powoduje nieskończoną rekurencję gdzie wskazane):
$q = $doctrineOdm->createQueryBuilder('Business');
foreach (array('American','Mega') as $keyword) {
$r = new \MongoRegex('/'.$keyword.'/i');
$q->addAnd(
$q->addOr($q->expr()->field('nm')->equals($r))
->addOr($q->expr()->field('dsc')->equals($r))
);
}
print_r($q->getQuery()->getQuery()); // infinite recursion
$cursor = $q->getQuery()->execute();
jakieś pomysły?
To było to dokładnie! Dziękuję Ci! Dodanie '-> expr()' rzeczywiście opóźnia dodawanie wyrażenia "$ lub" do odpowiedniego czasu. –