1

Doctrine ODM を使用して、ドキュメントを別のドキュメント内に保存する方法は?

ドキュメントに Array 型または Json 型がありません。

私はこのようなことができるようにしたいと思います:

class Post {

    /**
     * @MongoDB\String
     */
    protected $body;

    /**
     * @MongoDB\Array
     */
    protected $comments = array();

}

コメント用に別のコレクションを持ちたくありません。各投稿内に保存してほしい。

4

3 に答える 3

2
/**
 * @MongoDB\Document
 */
class Post
{
    /**
     * @MongoDB\Id
     */
    private $id;

    /**
     * @MongoDB\String
     */
    private $body;

    /**
     * @MongoDB\EmbedMany(targetDocument="Comment")
     */
    private $comments;

    public function __construct()
    {
        $this->comments = new ArrayCollection();
    }
}

/**
 * @MongoDB\EmbeddedDocument
 */
class Comment
{
    /**
     * @MongoDB\String
     */
    private $body;
}

ただし、MongoDB での埋め込みの最も一般的な例とは対照的に、コメントは埋め込みの候補として適していないことに注意してください。私も埋め込みとしてのコメントから始めましたが、いくつかの問題に遭遇し、それらを別のコレクションに保存することにしました。すべての問題を覚えているわけではありませんが、主な問題はデータベース側でコメントをソートできないことでした。迅速な解決策は、クライアント側でそれらをソートすることでしたが、ページネーションに関しては、スケーリングしません。

于 2011-11-28T19:08:05.107 に答える
0

これはあなたが探しているものだと思います: http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/embedded-mapping.html

于 2011-11-28T11:42:08.213 に答える