首页 > 解决方案 > RethinkDB:​​使用键数组连接表

问题描述

我有表用户喜欢

[
    {
        "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

解决方案


假设 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")
  };
})

推荐阅读