簡體   English   中英

mongo 中的 JOIN 查詢以包括主要集合的所有字段和其他集合的選定字段

[英]JOIN query in mongo to include all fields of primary collections & selected fields of other collections

我想包括主要集合的所有字段和我已加入聚合函數的其他集合的 2-3 個字段。 我可以使用 $project 作為

> $project:                     
>     { 
>       "_id":1,
>       "currency":1,
>       "studentId":1,
>       ............
>       ............
>       "partners.address.country": 1,
>         "course.courserName": 1
>     }

我在主要收藏中有超過 25 條記錄,也希望它更具動態性。 有沒有其他方法可以讓我不必編寫主要集合的每個字段。

從技術上講,您可以使用 $project 和 $addFields 的組合,但最好從性能角度計算應用程序級別的字段列表。

我能想到的唯一有效用例是當您事先不知道主集合的所有字段時。

因此,假設“合作伙伴”和“課程”來自 $lookup 管道可以是這樣的:

db.collection.aggregate([
  {
    $addFields: {
      "tmp": {
        "partners": "$partners",
        "course": "$course"
      }
    }
  },
  {
    $project: {
      "partners": false,
      "course": false
    }
  },
  {
    $addFields: {
      "partners.address.country": "$tmp.partners.address.country",
      "course.courserName": "$tmp.course.courserName"
    }
  },
  {
    $project: {
      "tmp": false
    }
  }
])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM