0

这个问题与此“相似”,但我要求替代(如果存在)。

我在 mongo shell 中创建了一个Nums带有集合的数据库。 作为 ODM使用,我想访问该集合并列出数字。 numbers
mongoose

var mongoose = require('mongoose')
  , Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost/Nums');
mongoose.model('numbers', new Schema({value: Number}));

mongoose.connection.on('open', function(ref) {
  console.log('Connected to mongo server.');
});

mongoose.connection.on('error', function(err) {
  console.log('Could not connect to mongo server!');
  console.log(err);
});

var nums = mongoose.model('numbers');
nums.find({}, function(err, data) {console.log(err, data, data.length);});

为了访问已经创建的数据库/集合,我是否总是需要通过mongoose.modelnew Schema调用?这一步可以绕过吗?

尽管这一步必须编写一次,但如果我有一个非常大的模式,这将是非常乏味的,只是从 mongo 中提取一个 db/collection。

是否有解决方法或者这是唯一的途径?

4

2 回答 2

0

如果你想使用 Mongoose API 来访问一个集合,你需要为它定义一个模式。如果您不想为集合定义架构,则需要使用本机驱动程序mongojs来访问它。

于 2012-11-01T20:55:02.263 回答
0

经过一些实验后,答案是“你必须指定架构和模型,但这还不错”。

例如,我可以这样做:

mongoose.connect('mongodb://localhost/Nums');
mongoose.model('numbers', new Schema());

但是正如@JohnnyHK 提到的那样,您错过了字段类型转换。

此外,假设您有一个大型架构,您可以指定要类型转换的内容:

mongoose.connect('mongodb://localhost/Nums');
mongoose.model('numbers', new Schema({username: String, address: String}));

我只输入了两个字段。

于 2012-11-01T21:48:04.070 回答