Doctrine MongoDb バンドルで Symfony 2 を使用しています。
マッピングを持つ 2 つのクラスがあります。
/**
* @MongoDB\Document
*/
class Consultant
{
/**
* @MongoDB\Id(strategy="NONE")
*/
protected $id;
/**
* @MongoDB\EmbedMany(targetDocument="Specialization", strategy="set")
*/
protected $specs;
}
/**
* @MongoDB\Document
*/
class Specialization
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\String
*/
protected $name;
/**
* @MongoDB\Boolean
*/
protected $visible = true;
}
コンサルタントを保存すると、Mongo レコードは次のようになります。
{
"_id": "1",
"name": "Manager",
"specs": {
"0": {
"_id": ObjectId("50d071ac6146a1f342000001"),
"name": "Support",
"visible": false
},
"1": {
"_id": ObjectId("50d069336146a10244000000"),
"name": "Orders",
"visible": false
}
}
}
冗長フィールド「visible」以外はすべて問題ありません。
@EmbedMany
注釈を使用して Doctrine によってどのフィールドを埋め込む必要があるかを指定する方法はありますか?