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