Я использую доктрину odm mongo, и у меня есть документы-классы
class Thing { /** * @MongoDB\Id */ protected $id; /** * @MongoDB\ReferenceOne(targetDocument="Bundle1:Other") */ protected $other; }
а также
class Other { /** * @MongoDB\Id */ protected $id; }
поэтому в базе данных все выглядит так:
{ "_id":ObjectId("43z758634875adf"), "other":ObjectId("38z287348d8se") }
Как я могу теперь запросить вещи, где другой – данный идентификатор?
$dm=$this->mongo->getManager(); $answers=$dm ->createQueryBuilder('Bundle1:Thing') ->field('other')->equals("ObjectId(516c0061975a299edc44b419)") // <-- ? ->getQuery() ->execute()->count();
Это приводит к неправильному запросу mongo
Запрос MongoDB: {"find": true, "query": {"other": "ObjectId (516c0061975a299edc44b419)"}, "fields": [], "db": "maself", "collection": "thing"} [] []
Когда я использую
-> поле ( 'другие') -> равна ( "516c0061975a299edc44b419")
запрос также неверен
Запрос MongoDB: {"find": true, "query": {"other": "516c0061975a299edc44b419"}, "fields": [], "db": "maself", "collection": "thing"} [] [ ]
Итак, как я могу искать предмет, где другой id равен объекту?
Пытаться
->field('other')->equals(new \MongoId("516c0061975a299edc44b419"))
ObjectId – это внутренний тип для Mongo, представленный \ MongoId () в PHP
(Но я также ответил в первой теме)