Mongodb Mongoose查询视图
我现在用的是猫鼬v。5.25,针对mongoDB v.3.6 我的应用程序应该从许多不同的视图中查询数据,例如,我当前在数据库中的一个视图:Mongodb Mongoose查询视图,mongodb,mongoose,mongoose-schema,Mongodb,Mongoose,Mongoose Schema,我现在用的是猫鼬v。5.25,针对mongoDB v.3.6 我的应用程序应该从许多不同的视图中查询数据,例如,我当前在数据库中的一个视图:DB.jobProviders\u view.find() 将返回从不同集合聚合的许多记录 对于普通的集合模型,我这样查询: const model = db.model(attribute); /*where attribute, can be any registered schema */ model.find(). then((r
DB.jobProviders\u view.find()
将返回从不同集合聚合的许多记录
对于普通的集合模型,我这样查询:
const model = db.model(attribute);
/*where attribute, can be any registered schema */
model.find().
then((result) => {
resolve(result);
}).
catch((err) => {
reject(err);
});
然后我注册模型的方式如下(简化代码):
当我从任何注册的模型中运行查询时,我得到的结果都很好。但是,当我对表示mongo数据库上视图的模型运行它时,它返回一个空数组
没有错误,什么都没有,只是一个空数组
我查阅了mongoose文档,没有找到任何特定的方法或模式来查询视图,而不是数据集合
这似乎与我系统中的任何其他收藏都是一样的
我遗漏了什么吗?我有同样的问题,但我已经解决了,请检查mongodb中视图的名称,它必须与
db.model('view\u name',view\u schema'相同)代码>
您可以像下面这样通过配置打开Mongoose调试Mongoose.set('debug',true)代码>我也面临同样的问题,我发现问题是mongoose默认情况下通过将模型/视图名称复数来读取任何集合名称
因此,当您创建任何视图并希望在mongoose中使用时,请确保视图名称应为复数(在视图名称末尾添加s)或在初始化架构时传递集合名称
范例
const users_schema = {
_id: ObjectId,
another_field: String
};
mongoose.model('vw_user_info', users_schema, 'vw_user_info');
添加第三个参数
db.model('view', view_schema, 'view_name_in_db')
db.model('view', view_schema, 'view_name_in_db')