我有两个 mongoDB 集合,一个是
Jobs
,第二个是 savedJob
,我想获取作业详细信息以及 savedJob
集合中存在哪个作业 ID,但是 mongoDb $lookup 聚合返回一个空数组.
首先,我从
savedJob
集合中查询保存的作业数据,因此我通过用户 ID 方法 id($match) 查询保存的作业文档,并使用此管道从 Job
获取作业详细信息数据
收藏。
查询代码是
const { userId } = req?.params;
const pipeline = [
{
$match: {
userId: userId,
},
},
{
$lookup: {
from: "Jobs",
localField: "jobId",
foreignField: "_id",
as: "jobDetails",
},
},
];
const savedJobsWithJobDetails = await saveJob.aggregate(pipeline);
console.log(savedJobsWithJobDetails);
代码在 MongoDB Playground 中工作正常,但在我的 Express 服务器中它返回一个空数组,我使用的是 Mongoose 6.0.1。
保存的作业文档如下所示:-
工作文档如下所示:-
我认为你有一个简单的错字。变化:
from: "Jobs"
到
from: "jobs"
在你的
$lookup
。 (注意小写的作业)。