猫鼬聚合反向查找或不带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'
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...