gpt4 book ai didi

mongodb - Mongoose 查询 View

转载 作者:可可西里 更新时间:2023-11-01 10:38:36 25 4
gpt4 key购买 nike

我目前使用的是 mongoose v.5.25,针对 mongoDB v.3.6。

我的应用程序应该从许多不同的 View 查询数据,例如,我目前在我的数据库中的一个 View :db.joboffers_view.find()

将返回许多从不同集合中聚合的记录。

对于普通的集合模型,我是这样查询的:

 const model = db.model(attribute);
/*where attribute, can be any registered schema */
model.find().
then((result) => {
resolve(result);
}).
catch((err) => {
reject(err);
});

然后我注册我的模型的方式是这样的(简化代码):

//...
//abstracting boring connection methods
const db = mongoose.connection
//...

//simple model schema
const users_schema = {
_id: ObjectId,
another_field: String
};

//here I'm registering a schema for a VIEW, instead of normal collection
const view_schema = {
_id: ObjectId,
another_field: String
};
//...
//then

db.model('users', users_schema);
db.model('view', view_schema);

当我从我注册的任何模型运行查询时,我得到的结果都很好。但是,当我针对表示我的 mongo 数据库上的 View 的模型运行它时,它返回一个空数组。

没有错误,什么都没有,只是一个空数组。

我查看了 mongoose 文档,但没有找到任何特定的方法或模式来查询 View ,而不是查询集合数据。

这似乎与我对我系统中的任何其他集合所做的方式相同。

我错过了什么吗?

最佳答案

我也遇到了同样的问题,我发现问题是 mongoose 默认情况下通过复数化模型/ View 名称来读取集合名称。

因此,当您创建任何 View 并想在 mongoose 中使用它时,要么确保您的 View 名称是复数(在 View 名称末尾添加 s),要么传递一个集合名称初始化架构

例子

const users_schema = {
_id: ObjectId,
another_field: String
};
mongoose.model('vw_user_info', users_schema, 'vw_user_info');

关于mongodb - Mongoose 查询 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51544962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com