簡體   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