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