У меня есть сайт электронной коммерции, работающий на MongoDB + GridFS. Каждый товар может иметь до 5 изображений. Каждое изображение имеет 3 миниатюры разного размера.
Мне нужен совет по лучшей структуре БД для этого.
В настоящее время я думаю хранить идентификаторы изображений, а также идентификаторы большого пальца (идентификаторы из GridFS) в каждом продукте:
{
'_id': 1,
'title': 'Some Product',
'images': [
{'id': '11', thumbs: {'small': '22', 'medium': '33'},
{'id': '44', thumbs: {'small': '55', 'medium': '66'}
]
}
Или было бы лучше хранить путь в GridFS?
{
'_id': '111',
'filename': '1.jpg',
'path': 'product/988/image/111/'
},
{
'_id': '222',
'filename': '1.jpg',
'path': 'product/988/image/111/thumbnail_small'
},
{
'_id': '333',
'filename': '1.jpg',
'path': 'product/988/image/111/thumbnail_large'
}
ОБНОВЛЕНИЕ: поле «путь» в GridFS является «фальшивым», а не реальным путем. Просто быстрый способ найти все связанные файлы. Дешевле иметь 1 индексированное поле, чем несколько полей с составными индексами.