我$or
在一个$and
操作中嵌套多个二操作数操作时遇到问题。这个讨论的结论听起来与我需要的相似,但我无法让它发挥作用。这是我正在尝试做的JavaScript:
db.Business.find(
{
$and:
[
{ $or: [{nm: /American/}, {dsc: /American/}] },
{ $or: [{nm: /Mega/}, {dsc: /Mega/}] }
]
}
)
这适用于 MongoDB 交互式 shell。
这里有一些对我来说看起来不错但不起作用的 PHP(在指示的地方导致无限递归):
$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();
有任何想法吗?