首页 > 解决方案 > 加入 mongo 中的查询以包括主要集合的所有字段和其他集合的选定字段

问题描述

我想包括我在聚合函数中加入的主要集合的所有字段和其他集合的 2-3 个字段。我可以使用 $project 作为

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

我在主要收藏中有超过 25 条记录,也希望它更有活力。有没有其他方法可以让我不必编写主要集合的每个字段。

标签: node.jsmongodb

解决方案


从技术上讲,您可以使用 $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
    }
  }
])

推荐阅读