在Mongo中是架构或无模式的

时间:2016-12-10 15:38:08

标签: mongodb mongoose mongoose-schema schemaless

我喜欢Mongodb的无模式架构。这使它变得如此灵活。然而,Mongoose ODM提供了一些需要的模型关系和数据验证等要求。

我已经阅读了一些SO线程,我发现Mongoose在处理真正复杂的文档结构方面的表现与本机MongoDB驱动程序相比并不是很好,在我的案例中就是NodeJS驱动程序。

我不想放弃无框架的灵活性,这使得我随时随地改变我的结构非常棒。但我想使用模型关系。

哪种做法更好:无架构或使用架构,特别是在Mongo中?

1 个答案:

答案 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
});