4
我使用Symfony 2與學說MongoDb捆綁。學說MongoDb嵌入式文檔 - 如何指定字段
有兩類與映射:
/**
* @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
}
}
}
一切除了冗餘字段「可見的」罰款。
有沒有一種方法可以指定使用@EmbedMany
批註的Doctrine應嵌入哪些字段?
爲什麼對象有這個字段,如果你不打算嵌入它?你應該在類和它的嵌入類之間建立1:1的關係。 – Sgoettschkes
那麼,我有單獨的集合'專業化'。這是一種與「顧問」分開管理的字典。我決定對該方案進行非規範化並將一個文檔嵌入另一個文檔。 – marden