У меня есть макет документа, как это:Каков наилучший способ структурирования встроенных документов в 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 }
]
}
]
}
Однако, я не могу понять как добавить/mod/del doc на уровне «3-го». Возможно ли это или даже хороший дизайн? Мне очень хотелось бы иметь все данные в одном документе, но управление начинает казаться слишком сложным.
Другая мысль, которую я имел, заключалась в использовании уникальных значений, которые существуют для субдокторов в качестве ключей. Я думал о своих поддоках, и у всех их есть уникальная ценность. Поэтому я мог бы это сделать:
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