Вообще говоря, вы должны использовать одну коллекцию для каждого «типа» вещей, которые вы храните. Похоже, что все приведенные выше примеры подпадают под «тип» продукта и должны быть в одной коллекции. Документы в одной коллекции не обязательно должны иметь одинаковые поля, хотя для продуктов у вас, вероятно, будет несколько общих полей во всех документах: название, цена, производитель и т. Д .; каждый «подтип» документа может иметь несколько общих полей, например, все жесткие диски могут иметь обороты в минуту, емкость хранилища, форм-фактор, интерфейс (SATA2 / 3, IDE и т. д.).
Основанием для этого совета является то, что запросы MongoDB выполняются для одной коллекции за раз. Если вы хотите показать результаты поиска, которые охватывают различные категории продуктов, которые у вас есть, то это просто с одной коллекцией, но сложнее с несколькими (и менее производительными).
Что касается производительности запросов, обязательно создайте индексы для полей, по которым вы ведете поиск. Если вы разрешите поиск по названию продукта или производителю, у вас будет индекс по названию и другой индекс по производителю. Точные индексы будут зависеть от полей в ваших документах.
Скорость вставки, с другой стороны, будет выше, чем меньше у вас индексов (поскольку каждый индекс может нуждаться в обновлении при каждом сохранении или обновлении документа), поэтому важно не создавать больше индексов, чем вы ». на самом деле понадобится.
Подробнее об этих темах см. В документации MongoDB по схеме и индексам , а также презентациях на 10gen.com от докладчиков 10gen и Пользователи MongoDB.