Mongodb Mongoose查询视图

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

我现在用的是猫鼬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((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')