繁体   English   中英

MongoDB 在 $lookup 上聚合多个本地字段

[英]MongoDB Aggregate multiple local fields on $lookup

我正在使用聚合来为每个父文档获取 4 个子文档。 不过,子文档都来自同一个集合。

   [
  {
    '$lookup': {
      'from': 'Roles', 
      'localField': 'dentistId', 
      'foreignField': '_id', 
      'as': 'DENTIST'
    }
  }, {
    '$lookup': {
      'from': 'Roles', 
      'localField': 'doctorId', 
      'foreignField': '_id', 
      'as': 'DOCTOR'
    }
  }, {
    '$lookup': {
      'from': 'roles', 
      'localField': 'lawyerId', 
      'foreignField': '_id', 
      'as': 'LAWYER'
    }
  }, {
    '$lookup': {
      'from': 'roles', 
      'localField': 'ceoId', 
      'foreignField': '_id', 
      'as': 'CEO'
    }
  }
]

我正在使用 MongoDB > 4 的版本。我希望只有 1 个$lookup然后执行类似的操作

localField: { $in:[dentistId, doctorId, lawyerId, ceoId }

有没有办法巩固这一点?

谢谢!

  • 您可以添加一个字段childDocs ,并在其中推送所有 id,
  • localField中传递该字段
[
  {
    $addFields: {
      childDocs: [
        "$dentistId",
        "$doctorId",
        "$lawyerId",
        "$ceoId"
      ]
    }
  },
  {
    '$lookup': {
      'from': 'roles', 
      'localField': 'childDocs', 
      'foreignField': '_id', 
      'as': 'childDocs'
    }
  }
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM