Мне любопытно узнать о плюсах и минусах использования вложенных документов по сравнению с более глубоким слоем в моей основной схеме:
var subDoc = new Schema({
name: String
});
var mainDoc = new Schema({
names: [subDoc]
});
или
var mainDoc = new Schema({
names: [{
name: String
}]
});
В настоящее время я использую вложенные документы повсюду, но в первую очередь меня интересуют проблемы с производительностью или запросы, с которыми я могу столкнуться.
javascript
node.js
mongodb
mongoose
cyberwombat
источник
источник
_id
поле описать ? Я имею в виду, что он не автоматический, если он включен?_id
, уникальны ли области вложенных документов? (создано с использованием 2-го способа в вопросе OP)Ответы:
Согласно документам , это точно так же. Однако использование схемы также добавит
_id
поле (если оно не отключено) и, предположительно, использует дополнительные ресурсы для отслеживания вложенных документов.источник
Если у вас есть схемы, которые повторно используются в различных частях вашей модели, может быть полезно определить отдельные схемы для дочерних документов, чтобы вам не пришлось дублировать себя.
источник
Вы должны использовать встроенные документы, если это статические документы или их не более нескольких сотен из-за снижения производительности. Я уже говорил об этой проблеме некоторое время назад. Недавно Ася Камский, которая работает архитектором решений для MongoDB, написала статью об «использовании вложенных документов».
Я надеюсь, что это поможет тем, кто ищет решения или передовой опыт.
Оригинальный пост на http://askasya.com/post/largeembeddedarrays . Вы можете получить доступ к ее профилю stackoverflow на https://stackoverflow.com/users/431012/asya-kamsky
источник
По сути, создайте переменную
nestedDov
и поместите ее сюдаname: [nestedDov]
Простая версия:
Пример JSON
Пример:
источник
Я думаю, что это обрабатывается в другом месте в нескольких сообщениях на SO.
Немного:
Ключевым моментом здесь является то, что здесь нет однозначного ответа, только набор довольно сложных компромиссов.
источник
Между ними есть некоторая разница:
Использование вложенной схемы полезно для проверки.
Вложенную схему можно повторно использовать в других схемах.
источник