0

我是面向文档的数据库的新手。我遇到了一个简单的问题:

我必须区分对象:发布和标记。

{
   "_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
}
4

1 回答 1

0

我想我找到了适合回答我的问题的东西。但我不确定这是不是最好的方法......

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

   return $query->execute();
}
于 2013-01-04T15:00:14.620 回答