Быть схемой или без схемы в Монго
Мне нравится бесщеточная архитектура Mongodb. Это делает его таким гибким. Тем не менее, существуют определенные требования, такие как связь модели и проверка данных, которые предоставляет Mongoose ODM.
Я прочитал несколько SO-потоков, где я обнаружил, что производительность Mongoose в обработке действительно сложной структуры документа не так хороша по сравнению с собственным драйвером MongoDB, в моем случае драйвером NodeJS.
Я не хочу потерять гибкость без схемы, которая делает меня действительно замечательным, когда я хочу изменить мою структуру. Но я хочу использовать модель отношений.
Какая практика лучше: без схемы или с использованием схемы, особенно в Монго?
1 ответ
Вот несколько способов избежать накладных расходов, которые предоставляет mongoose, и способ получить доступ к собственным командам mongoDb для драйвера NodeJs в вашем скрипте.
Вы можете получить доступ к экземпляру mongodb.Db.
из-за этого вы можете получить доступ к конструктору db для драйвера Nodejs.
Так что я мог бы сделать что-то подобное в моем файле узла js/ mongoose
mongoose.connection.db.dropCollection("collectionName", function(err, doc){
if(err) console.log(err);
console.log(doc);
})
Также, если вы не хотите, чтобы служебные данные, которые mongoose предоставляет с дополнительными свойствами объекта, который возвращается из запросов, которые вы можете использовать .lean()
, Если вы используете lean
вы возвращаете простые объекты javascript, а не документы mongoose. Lean намного быстрее.
ПРИМЕР::
Model.find().lean().exec(function (err, docs) {
docs[0] instanceof mongoose.Document // false
});