Быть схемой или без схемы в Монго

Мне нравится бесщеточная архитектура 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
});
Другие вопросы по тегам