如何用Doctrine和MongoDB存儲數組?用Doctrine和MongoDB存儲數組
我不想參考文檔,只有數組。
例子:
Type[
Type1,
Type2,
Type3
]
我需要創建新的學說ODM數據類型?
如何用Doctrine和MongoDB存儲數組?用Doctrine和MongoDB存儲數組
我不想參考文檔,只有數組。
例子:
Type[
Type1,
Type2,
Type3
]
我需要創建新的學說ODM數據類型?
如果您需要存儲未映射到數組中的文檔類的值,則可以使用映射到MongoDB中的基本數組的collection
字段映射。還有一個hash
類型,它類似地將PHP中的關聯數組轉換爲MongoDB中的對象,而不映射其中的任何內容。
如果示例中的「類型」是映射文檔類,那麼您需要使用EmbedMany關係,該關係將一個或多個映射文檔存儲在父文檔的數組中。在MongoDB中,這將被表示爲一個對象數組,這與您對collection
字段(存儲關聯數組數組)的操作類似。但是,ODM將利用EmbedMany映射將這些對象恢復爲文檔實例。
...
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
...
class MyClass
{
/**
* @MongoDB\Hash
*/
protected $tags = array();
}
此外,你可以檢查出BSPTagBundle如果你想要一個表單類型,可以幫助您與該類型的變量。
您可以根據需要使用mongo類型的散列或集合。
散列值:存儲並檢索值作爲關聯數組。
集合:以數字索引數組的形式存儲和檢索值。
例如:
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)
}
爲我工作表示感謝。不清楚爲什麼它沒有在文檔中指定http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/basic-mapping.html#doctrine-mapping-types –
什麼樣的我們應該使用映射來更新數組以添加另一個鍵:value元素? – Sekai
@Sekai:我不明白這個問題。在將其寫入MongoDB字段之前,''collection'類型通過'array_values()'運行PHP值(以數字方式重新索引鍵)。 'hash'策略將PHP值轉換爲一個對象(即PHP中的stdClass),以確保將其保存爲BSON對象。集合/散列值中的鍵/值對都沒有映射(這就是將這些與嵌入式文檔(EmbedOne和EmbedMany)區分開來的原因) – jmikola