我喜欢 Mongodb 的无模式架构。这使它如此灵活。然而,Mongoose ODM 提供了某些要求,例如模型关系和数据验证。
我已经阅读了一些 SO 线程,我发现 Mongoose 在处理非常复杂的文档结构方面的性能与本机 MongoDB 驱动程序(在我的例子中是 NodeJS 驱动程序)相比并没有那么好。
我不想失去无模式的灵活性,这使得随时改变我的结构真的很棒。但我想使用模型关系。
哪种做法更好:无模式或在 Mongo 中使用模式?
我喜欢 Mongodb 的无模式架构。这使它如此灵活。然而,Mongoose ODM 提供了某些要求,例如模型关系和数据验证。
我已经阅读了一些 SO 线程,我发现 Mongoose 在处理非常复杂的文档结构方面的性能与本机 MongoDB 驱动程序(在我的例子中是 NodeJS 驱动程序)相比并没有那么好。
我不想失去无模式的灵活性,这使得随时改变我的结构真的很棒。但我想使用模型关系。
哪种做法更好:无模式或在 Mongo 中使用模式?
这里有一些方法可以避免 mongoose 提供的一些开销,以及在脚本中访问 NodeJs 驱动程序的本机 mongoDb 命令的方法。
您可以访问mongodb.Db 实例。
因此,您可以访问Nodejs 驱动程序的db 构造函数。
所以我可以在我的节点 js/mongoose 文件中做这样的事情
mongoose.connection.db.dropCollection("collectionName", function(err, doc){
if(err) console.log(err);
console.log(doc);
})
此外,如果您不希望 mongoose 通过查询返回的对象的额外属性提供的开销,您可以使用.lean()
. 如果你使用lean
你会得到纯 javascript 对象而不是猫鼬文档。精益要快得多。
例子::
Model.find().lean().exec(function (err, docs) {
docs[0] instanceof mongoose.Document // false
});