【发布时间】:2013-12-23 08:56:11
【问题描述】:
我还在学习Mongodb、Nodejs和Mongoose,所以如果这个问题缺乏理解,请原谅我的无知。
我发现每个 Mongodb 集合都必须在 Mongoose 中进行剖析有点多余。具体来说,每个 Mongodb 集合的所有字段及其类型都需要在 Mongoose 的模式中说明。
如果我有一个包含共享相同字段的文档的集合,例如:
> db.people.find()
{ "_id" : ObjectId("1111"), "name" : "Alice", "age": 30 }
{ "_id" : ObjectId("2222"), "name" : "Bob", "age": 25 }
{ "_id" : ObjectId("3333"), "name" : "Charlie", "age": 40 }
Mongoose+Nodejs 连接这个 Mongodb 的方式
var mongoose = require('mongoose');
var personSchema = new mongoose.Schema({
name : String,
age : Number
});
mongoose.model("Person", personSchema, 'people');
最后一行包含集合名称作为第三个参数 (explained here)。
是否可以让 Mongoose 以某种方式从 Mongodb 集合中自动提取模式,以获取包含相同字段文档的集合(即它们将具有相同的模式)? 这样我们就不会必须在 Mongoose 中定义模式。
【问题讨论】:
-
我认为不可能从 mongodb 检索架构,因为集合中的每个文档都可以有不同的架构
-
感谢您指出这一点,我要强调的是,我只是在询问集合包含共享相同字段的文档的情况。
-
如果不想使用架构,为什么还要使用 Mongoose?
-
@Alice 您可以手动将任何文档插入到集合中。 Mongo 是无模式的。因此,您无法可靠地实现这一目标。当然,您可以获取第一个文档并在此基础上进行分析,但是 Mongoose 不支持。
-
如果不喜欢使用schema定义,直接使用mongodb nodejs native即可。它没有架构。