如何 return 另一个集合的数据与任何其他集合查询?

How to return another collection's data with any other collection queried?

我在 mongo UserTrainer 中实现了两个集合。

User 集合包含 ID、姓名、电子邮件和描述。 Trainer 包含 id、coursesMade 和 trainerId。这里的 trainerId 是 User 集合中的 id 示例:

//User collection
{
  id:123,
  name: "alice",
  email: "alice@example.com",
  description: "some text"
}

//Trainer collection
{
  id:134,
  coursesMade: 3,
  trainerId: 123
}

现在我有一些功能可以为我提供培训师列表。 我想查询 returns me trainer 集合以及该 trainerId 的用户参考。

预期输出:

{
  id:134,
  coursesMade: 3,
  trainerId: 123,
  trainerDetails: {
    id: 123,
    name: "alice",
    email: "alice@example.com",
    description: "some text"
  }
}

作为初学者,我不知道如何在 mongo 中实现它, 任何一般的想法将不胜感激。

您需要使用查找

db.trainer.aggregate([
  {
    "$lookup": {
      "from": "user",
      "localField": "trainerId",
      "foreignField": "id",
      "as": "trainers"
    }
  }
])

playground