我在操作中嵌套多個雙操作數$or
操作時遇到問題。 this discussion的結論聽起來類似於我所需要的,但我無法使其發揮作用。這裏是我想要做的事情的JavaScript:
db.Business.find(
{
$and:
[
{ $or: [{nm: /American/}, {dsc: /American/}] },
{ $or: [{nm: /Mega/}, {dsc: /Mega/}] }
]
}
)
這在MongoDB交互式shell中起作用。
而且這裏的一些PHP看起來OK我,但不工作(導致其中表示無限遞歸):
$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();
任何想法?
這是它到底!謝謝!添加' - > expr()'確實會延遲添加'$或'表達式直到適當的時間。 – 2012-04-24 00:02:21