MongoDB / doctrine: nie można zagnieździć $ lub w $ i

Mam problem z zagnieżdżeniem wielu dwóch operandów$or operacje w obrębie$and operacja. Wniosek zta dyskusja brzmi podobnie do tego, czego potrzebuję, ale nie mogę go uruchomić. Oto JavaScript tego, co próbuję zrobić:

<code>db.Business.find(
  {
    $and:
      [
        { $or: [{nm: /American/}, {dsc: /American/}] },
        { $or: [{nm: /Mega/}, {dsc: /Mega/}] }
      ]
  }
)
</code>

Działa to w powłoce interaktywnej MongoDB.

I tutaj jest trochę PHP, który wygląda dobrze dla mnie, ale nie działa (powoduje wskazanie nieskończonej rekursji):

<code>$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();
</code>

Jakieś pomysły?

Crossposted tutaj.

questionAnswers(2)

yourAnswerToTheQuestion