MongoDB 3.4 - 是否可以使用 `$graphlookup` 或其他内容执行 2 个以上集合的连接?

标签 mongodb spring-data spring-data-mongodb

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

用户用户组队列具有以下关系:

用户有一个或多个队列

用户拥有一个或多个用户组

用户组有一个或多个队列

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

更新 这个查询对我有用:

{
  "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"
    }
  }
]

关于MongoDB 3.4 - 是否可以使用 `$graphlookup` 或其他内容执行 2 个以上集合的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43551130/

相关文章:

javascript - 如何在 Node.js 中通过 Mongoose 连接通过两个回调调用创建的字符串?

jpa - 在Spring Data中为具有预定义ID的实体实现Persistable.isNew的首选方法

java - Spring Data MongoDB 错误

java - 复制按字段值分组

mongodb - MongoRepository JSON 日期查询 (Spring)

javascript - 类型错误 : Cannot call method 'toArray' of undefined while aggregatein mongo in node. js

node.js - 如何插入嵌套对象数组

node.js - 在 ExpressJS 上使用 Mongoose 运行 'node_acl'

mysql - 如何使用EntityManager为MySql JSON_EXTRACT函数创建JPQL查询

java - 使用 AbstractRoutingDataSource 并尝试设置多个数据源时出现 Spring 引导错误