MongoDB 3.4 - 是否可以使用 `$graphlookup` 或其他方式执行来自 2 个以上 collections 的连接?

MongoDB 3.4 - Is it possible to perform join from more than 2 collections using either `$graphlookup` or something else?

是否可以加入(使用 $graphlookup 或任何其他方法)超过 2 个 collections ? 例如我有 3 collections:

usersusergroupsqueues 具有以下关系:

user有一个或多个queues

user有一个或多个usergroups

usergroup有一个或多个queues

现在对于给定的 user,我想要所有 queue 文档(直接关联,或通过用户组关联)

更新 这个查询对我有用:

{
  "aggregate": "user",
  "pipeline": [
    {
      "$match": {
        "name": "test"
      }
    },
    {
      "$graphLookup": {
        "from": "queue",
        "startWith": "$queues",
        "connectFromField": "queues",
        "connectToField": "name",
        "as": "userqueues"
      }
    },
    {
      "$graphLookup": {
        "from": "usergroup",
        "startWith": "$userGroups",
        "connectFromField": "userGroups",
        "connectToField": "name",
        "as": "allusergroups"
      }
    },
    {
      "$unwind": "$allusergroups"
    },
    {
      "$graphLookup": {
        "from": "queue",
        "startWith": "$allusergroups.queues",
        "connectFromField": "allusergroups",
        "connectToField": "name",
        "as": "groupqueues"
      }
    }
  ]
}

试试这个聚合管道。

// Run this on user

[{
    $lookup: {
      "from": "queus",
      "localField": "_id",
      "foreignField": "user",
      "as": "user_queus"
    }
  },
  {
    $lookup: {

      "from": "usergroup",
      "localField": "_id",
      "foreignField": "users",
      "as": "usergroups"

    }
  },
  {
    $unwind: "usergroups"
  },
  {
    $lookup: {
      "from": "queus",
      "localField": "usergroups._id",
      "foreignField": "usergroup",
      "as": "usergroup_queus"
    }
  }
]