0
我有一個文件佈局是這樣的:在MongoDB中構建嵌入式文檔的最佳方式是什麼?
Program = {
'_id':ObjectId('4321...'),
'Title':'The Title',
'Episodes':[
{
'Ep_ID':'234122', # this is unique
'Title': 'Ep1',
'Duration':45.2 },
'Ep_ID':'342343' # unique
'Title': 'Ep2',
'Duration':32.3 }
]
}
我想要做的是在每集內另一個嵌入的文檔,像這樣:
Program = {
'_id':ObjectId('4321...'),
'Title':'The Title',
'Episodes':[
{
'Ep_ID':'234122' # this is unique
'Title': 'Ep1',
'Duration':45.2,
'FileAssets':[
{ 'FileName':'video1.mov', 'FileSize':2348579234 },
{ 'FileName':'video2.mov', 'FileSize':32343233 }
]
},
{
'Ep_ID':'342343' # unique
'Title': 'Ep2',
'Duration':32.3,
'FileAssets':[
{ 'FileName':'video1.mov', 'FileSize':12423773 },
{ 'FileName':'video2.mov', 'FileSize':456322 }
]
}
]
}
不過,我想不出如何在「第三」級添加/修改/刪除文檔。這是可能的,甚至是好的設計?我非常喜歡在一個文檔中擁有所有數據,但管理似乎開始顯得過於複雜。
我想的另一個想法是使用碰巧存在的子文檔作爲關鍵字的唯一值。我想過我的子文檔,它們都有某種獨特的價值。所以我可以這樣做:
Program = {
'_id':ObjectId('4321...'),
'Title':'The Title',
'Ep_ID_234122':{episode data},
'Ep_ID_342343':{episode data},
'FileAsset_BigRaid_Video1.mov':{'Ep_ID_234122', + other file asset data},
'FileAsset_BigRaid_video2.mov':{'Ep_ID_234122', + other file asset data}
}
任何想法都會很棒!
謝謝,是的,結構正在我的腦海裏。好點重新匹配鍵上的字符串。我現在想的是嵌套,但最多隻有一層。所以我可以創建一個'FileAssets'列表並在每個文件資產中放入一個引用。我認爲這樣可以。否則,我會回到分開的集合。感謝您的反饋..真的很有幫助 – MFB 2012-04-23 08:48:54