我喜欢 Mongodb 的无模式架构。这使得它非常灵活。然而,Mongoose ODM 提供了某些要求,例如模型关系和数据验证。
我阅读了一些 SO 线程,发现 Mongoose 在处理真正复杂的文档结构方面的性能与 native MongoDB 驱动程序相比并不是那么好,在我的例子中是 NodeJS 驱动程序。
我不想失去无架构的灵 active ,这让我可以随时更改我的结构,这真的很棒。但是我想用模型关系。
哪种做法更好:无模式或特别是在 Mongo 中使用模式?
最佳答案
这里有一些方法可以避免 mongoose 提供的一些开销,以及一种在脚本中为 NodeJs 驱动程序访问 native mongoDb 命令的方法。
您可以访问 mongodb.Db instance .
因此您可以访问 db constructor用于 Nodejs 驱动程序。
所以我可以在我的节点 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
});
关于mongodb - 在 Mongo 中是模式还是无模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41077208/