没有localField的猫鼬聚合反向查找或查找

mongoose aggregation reverse lookup or lookup without localField

我想 运行 聚合计划架构并获取具有参考 ID planId 的反馈。 但是如果我想填充查找,我需要计划中的参考 ID,但我不喜欢这种保存参考 ID 的策略,我喜欢将所有内容分开。

有没有办法在没有参考 ID 的情况下进行填充。

像这样。但它不起作用。

const pipe = [
{
  $lookup: {
    from: 'Feedbacks',
    pipeline: [
      { 
        $match: { 
          planId: '$_id'
        }
      }
    ],
    as: 'feedback'
  }
}]
await Plan.aggregate(pipe);
export interface Plan {
  _id: ObjectId;
  ...

}
export interface Feedback {
  planId: ObjectId;
  ...
}

我找到了答案。对于其他人:

{
  from: 'Feedbacks',
  let: { planIdInPlan:"$_id"},
  pipeline: [
              {
                $match: {
                  $expr:
                  {
                    $eq:['$planId', '$$planIdInPlan'] 
                  }
                }
                }
            ],
  as: 'feedback'
}