如何编写一个查询来 return table 2 中具有特定字段匹配 table 1 在 MongoDB Atlas 中的 ID 的对象的数量?

How to write a query that will return the count of objects in table 2 that have a certain field matching table 1's ID in MongoDB Atlas?

我有两个 table,用户和游乐设施。

我想 return 在游乐设施中有 0 次游乐设施的所有用户的名字和姓氏 table。

User 对象设置了以下字段:

_id:
StravaConnect:Object {
  AthleteID: 123
}
FirstName:
LastName:

Ride 对象设置了以下字段:

_id:
AthleteID: 123
Length: 

如何聚合此数据以显示所有用户的列表,其中 Ride.AthleteID == User.StravaConnect.AthleteID 有 0 次游乐设施?

注意:我正在使用 MongoDB 指南针

试试这个管道:

  1. $lookup 获得用户的乘车
  2. $match documents where $size of rides array if greater than 0
  3. $project 必填字段
[
  {
    "$lookup": {
      "from": "rides",
      "localField": "StravaConnect.AthleteID",
      "foreignField": "AthleteID",
      "as": "rides"
    }
  },
  {
    "$match": {
      $expr: {
        "$gt": [
          {
            "$size": "$rides"
          },
          0
        ]
      }
    }
  },
  {
    "$project": {
      "FirstName": 1,
      "LastName": 1
    }
  }
]

Mongo Playground