MongoDb $lookup 聚合返回一个空数组

问题描述 投票:0回答:1

我有两个 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。

保存的作业文档如下所示:-

工作文档如下所示:-

我检查了所有模型名称和字段名称,但它返回一个空数组

mongodb mongoose aggregation-framework mongoose-schema mongoose-populate
1个回答
0
投票

我认为你有一个简单的错字。变化:

from: "Jobs" 

from: "jobs"

在你的

$lookup
。 (注意小写的作业)。

© www.soinside.com 2019 - 2024. All rights reserved.