Я работаю над супер простым поиском по нескольким полям документа, чтобы узнать, имеет ли какое-либо из них одно значение. (Примечание: в некоторых полях используется регулярное выражение для поиска, если значение содержится в строке). Используя построитель запросов, я построил следующее.Doctrine MongoDB Query Builder addOr query не возвращает никаких результатов
public function search($value, $limit, $offset=0, $orderby = '', $order='')
{
$regexVal = new \MongoRegex('/^.*(\b'.str_replace(' ', '\s', $value).'\b).*?$/i');
$query = $this->repository->createQueryBuilder();
$query->addOr($query->expr()->field('location')->equals($regexVal));
$query->addOr($query->expr()->field('mappedData.name')->equals($regexVal));
$query->addOr($query->expr()->field('mappedData.first_name')->equals($regexVal));
$query->addOr($query->expr()->field('mappedData.last_name')->equals($regexVal));
$query->addOr($query->expr()->field('mappedData.email')->equals($value));
$query->addOr($query->expr()->field('email')->equals($value));
$query->addOr($query->expr()->field('organization')->equals($value));
$query->limit($limit)
->skip($offset);
if(! empty($orderby) && $order){
$query->sort($orderby, $order);
}
return $query->getQuery()->execute();
}
Если я выгружаю построенные значения запроса, я получаю следующий массив в этом значении. https://gist.github.com/jchamb/04a0400c989cd28b1841 Дополнительное поле ассоциации добавлено фильтром Doctrine.
Через Query builder Я не получаю никаких результатов, однако, если я сам создаю запрос и запустил его в приложении администратора, например genghis, я получаю ожидаемый результат одного документа.
Настоящая письменная строка mongodb выглядит следующим образом. https://gist.github.com/jchamb/ce60829480576a88290d
Этот проект является приложением zend2, которое уже использовало доктрину и монго. Я не специалист по mongo в целом, поэтому я не уверен, что я делаю неправильно внутри Query Builder, что я не получаю тот же результат, что и выполнение запроса напрямую. Я не могу найти информацию о стеке или документах построителя запросов, которые также дают дополнительные подсказки для синтаксиса нескольких addOrs.
Любая помощь или направление было бы очень оценено, в самой базовой форме мне нужен построитель запросов, чтобы получить документ, где association = x и (field1 = val или field2 = value).
Спасибо!