Получение родительского объекта с идентификатором ссылочных документов

Я новичок в документально-ориентированных базах данных. Я застрял с простой проблемой:

У меня есть разные объекты: пост и тег.

{
   "_id": "ObjectId("50dad56881000001")",
   "author":"Chuck Norris",
   "title":"Blah....",
   "tags": [
       DBRef("Tag", ObjectId("50dad564871000001")),
       DBRef("Tag", ObjectId("50dad564871000002")),
       DBRef("Tag", ObjectId("50dad564871000003"))
}

Мне нужно найти сообщения по тегам. Я не могу понять, как это сделать с массивом ссылочных объектов...

Вот мои сопоставленные объекты:

class Tag
{
    /** @MongoDB\Id */
    protected $id;

    /** @MongoDB\Field(type="string") */
    protected $name;

    /** @MongoDB\Field(type="date") */
    protected $createdAt;
}

class Article
{
    /** @MongoDB\Id */
    protected $id;

    /** @MongoDB\Field(type="date") */
    protected $date;

    /** @MongoDB\Field(type="string") */
    protected $title;

    /** @MongoDB\Field(type="string") */
    protected $author;

    /** @MongoDB\Field(type="string") */
    protected $content;

    /** @MongoDB\ReferenceMany(targetDocument="Tag", cascade="all") */
    protected $tags
}

1 ответ

Решение

Я думаю, что нашел что-то подходящее, чтобы ответить на мою проблему. Но я не уверен, что это лучший способ сделать это...

public function getPostsWithTag($tagId)
{
   $query = $this->createQueryBuilder()
      ->field('tags.id')
      ->in(array($tagId)
      ->getQuery()

   return $query->execute();
}
Другие вопросы по тегам