8

Doctrine と Mongo DB で配列を保存するにはどうすればよいですか?

参照ドキュメントは必要ありません。配列のみが必要です。

例:

Type[ 
     Type1,
     Type2,
     Type3
]

新しい Doctrine ODM データ型を作成する必要がありますか?

4

3 に答える 3

16

ドキュメント クラスにマップされていない値を配列に格納する必要がある場合はcollection、MongoDB の基本配列にマップされるフィールド マッピングを使用できます。hash同様に、PHP の連想配列を MongoDB のオブジェクトに変換し、その中に何もマッピングしないタイプもあります。

例の「タイプ」がマップされたドキュメント クラスである場合は、1 つ以上のマップされたドキュメントを親ドキュメント内の配列に格納するEmbedManyリレーションシップを使用する必要があります。MongoDB 内では、これはオブジェクトの配列として表されます。これは、collectionフィールドで自分でできること (連想配列の配列を格納すること) に似ています。ただし、ODM は EmbedMany マッピングを使用して、これらのオブジェクトをハイドレートしてドキュメント インスタンスに戻します。

于 2012-10-19T14:33:15.870 に答える
7

必要に応じて、mongo タイプのハッシュまたはコレクションを使用できます。

Hash :値を連想配列として格納および取得します。

Collection :値を数値インデックス配列として格納および取得します。

例えば:

use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

class Category
{
    /**
     * @MongoDB\Field(name="tags", type="collection")
     */
    private $tags;

    /**
     * @MongoDB\Field(name="country_wise_total_count", type="hash")
     */
    private $country_wise_total_count;
}

データは次のように保存されます。

"tags": [
    "man",
    "boy",
    "male",
    "sandal",
    "cloth",
    "army boots",
    "boots",
    "sport shoes",
    "school",
    "casual",
    "office"
  ],

"country_wise_total_count": {
     "NP": NumberInt(7),
     "US" : NumberInt(10)
  }
于 2014-09-17T05:31:22.033 に答える