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?