3

ドキュメントに文字列の単純な配列/コレクションが必要ですが、Doctrine ODM でこれを実現する方法が見つかりません。

これはクラス/ドキュメントの例$tagsで、文字列の単純な配列である必要があります:

namespace Acme\ExampleBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

/** @MongoDB\Document */
class MyDocument {

    /** @MongoDB\Id */
    protected $id;

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

    /** @MongoDB\EmbedMany */
    protected $tags = array();
}

私はさまざまなことを試しました。@MongoDB\EmbedManyまたは@MongoDB\EmbedMany(targetDocument="String")、最後のものが機能する理由がないことを知っていますが、考えられることは何でも試してみました。

JSON としての Mongo DB の最終結果は、次のように単純です。

{
    "_id": ObjectId("a0afa410caeea70de1000000"),
    "name": "Example Name",
    "tags": ["tag1", "example", "test tag"]
}

私が助けを必要としているのは、 @MongoDB\EmbedMany アノテーションを使用してコレクションに文字列のみを追加できるようにする方法です。これは、DB に永続化されたときに上記の JSON のようになります。

私は今これに本当に行き詰まっているので、誰かが助けてくれることを願っています。それはとてもシンプルであるべきだと感じます!

4

2 に答える 2

4

Doctrine MongoDB ODM は、配列のマッピング タイプを「ハッシュ」と呼びますが、これは少し混乱します。クラスは次のようになります。

namespace Acme\ExampleBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

/** @MongoDB\Document */
class MyDocument {

    // ...

    /** @MongoDB\Hash */
    protected $tags = array();
}

質問で説明したように、MongoDB にフラッシュすると、コレクション内にハッシュが格納されるはずです。

詳細については、HashType の実装をご覧ください。

于 2012-11-25T15:31:15.767 に答える