使用Mongoose列出集合项目

时间:2012-11-01 20:38:01

标签: mongoose

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

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

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这将是非常繁琐的。

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

2 个答案:

答案 0 :(得分:0)

如果要使用Mongoose API访问集合,则需要为其定义架构。如果您不想为集合定义架构,则需要使用native drivermongojs来访问它。

答案 1 :(得分: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}));

我只输入两个字段。