【问题标题】:RethinkDB: join table with array of keysRethinkDB:​​使用键数组连接表
【发布时间】:2021-05-21 11:32:14
【问题描述】:

我有表用户喜欢

[
    {
        "id":  "1" ,
        "name": "John",
        "groups":  ["1", "2"]
    }
    {
        "id":  "2" ,
        "name": "Jack",
        "groups":  ["1"] 
    }
]

和表喜欢

[
    {
        "id":  "1" ,
        "name": "Admin",
        "description": "Administrator"
    },
    {
        "id":  "2" ,
        "name": "Guest",
        "description": "Dear guest"
    }
]

如何使用类似结果的 ReQL 选择查询

[
    {
        "id":  "1" ,
        "name": "John",
        "groups":  ["Administrator", "Guest"]
    },
    {
        "id":  "2" ,
        "name": "Jack",
        "groups":  ["Administrator"] 
    }
]

?

[
    {
        "id":  "1" ,
        "name": "John",
        "groups":  [
            {
                "id":  "1" ,
                "name": "Admin",
                "description": "Administrator"
            },
            {
                "id":  "2" ,
                "name": "Guest",
                "description": "Dear guest"
            }
        ]
    },
    {
        "id":  "2" ,
        "name": "Jack",
        "groups":  [
            {
                "id":  "2" ,
                "name": "Guest",
                "description": "Dear guest"
            }
        ] 
    }
]

【问题讨论】:

    标签: rethinkdb


    【解决方案1】:

    假设 Javascript API 并使用.merge() 命令:

    r.table("users").merge(function(user) {
      return {
        groups: r.table("groups")
          .getAll(r.args(user("groups")))
          .getField("name")
          .coerceTo("array")
      };
    })
    

    r.table("users").merge(function(user) {
      return {
        groups: r.table("groups")
          .getAll(r.args(user("groups")))
          .coerceTo("array")
      };
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      相关资源
      最近更新 更多