У меня есть модель данных в MongoDB, которую я могу успешно запрашивать с помощью собственных запросов MongoDB.Однако я не могу выразить их с помощью Query Builder API Doctrine MongoDB ODM.
Вот так выглядит моя модель в MongoDB (это пример JSON-кода):
{ "name": "ArticleName",
"features": {
{ "type": "color",
...
"values": {
{ "value": "RED",
"label": "red",
....
},
{ "value": "GREEN",
"label": "green" }
}
},
{ "type": "width",
"values": {
{ "value": "40"}
}
}
}
}
Я хочу найти статьи путем поиска различных комбинаций значений и характеристик , например, я хочу найти статью с цветом = зеленый и шириной = 40.
Однако я не смог создать запрос для этого с помощью Doctrine MongoDB ODM Query Builder API **?Вот что я пробовал:
# Document/ArticleRepository.php
$features = array('color'=>'RED', 'width'=>'40');
$qb = $this->createQueryBuilder('CatalogBundle:Article'); // I use symfony 2
foreach ($features as $type => $value)
{
$qb->field('features')->elemMatch(
$qb->expr()->field('type')->equals($type)->field('values')->elemMatch(
$qb->expr()->field('value')->equals($value)
)
);
}
return $qb->getQuery()->execute();
Однако это приводит к запросу, который содержит только одно условие.Другое условие, кажется, перезаписано.Это запрос , сгенерированный Query Builder :
db.articles.find({ "features": { "$elemMatch": { "type": "width", "values": { "$elemMatch": { "value": 40 } } } } })
Есть ли способ решить мой сценарий использования с API MongoDB ODM Query Builder?