这个问题与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.model
和new Schema
来电?可以绕过这一步吗?
即使这个步骤必须写一次,但是如果我有一个非常大的模式,那么从mongo中提取db / collection这将是非常繁琐的。
是否有解决方法或这是唯一的途径?
答案 0 :(得分:0)
如果要使用Mongoose API访问集合,则需要为其定义架构。如果您不想为集合定义架构,则需要使用native driver或mongojs来访问它。
答案 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}));
我只输入两个字段。