【问题标题】:mongoose aggregation reverse lookup or lookup without localField [duplicate]猫鼬聚合反向查找或没有localField的查找[重复]
【发布时间】:2020-12-01 11:09:57
【问题描述】:

我想在 Plan Schema 上运行聚合并获取具有引用 ID planId 的反馈。 但是,如果我想填充查找,我需要 Plan 中的参考 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;
  ...
}

【问题讨论】:

    标签: node.js mongoose aggregation mongoose-populate


    【解决方案1】:

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

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

    【讨论】:

    • 只是一个问题,速度慢,性能差是不是很糟糕?还是从正确的方式查找会更好(在反馈集合上运行聚合并查找计划集合),然后添加更多管道?
    • @KasirBarati 我不认识,我放弃了猫鼬及其类型。意识到 NoSQL 不是我的事,所以完全改成了 Postgresql。
    猜你喜欢
    • 2021-10-24
    • 2019-08-12
    • 2021-09-03
    • 2014-12-08
    • 2021-05-06
    • 2020-09-16
    • 2019-12-03
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多