RethinkDB复合主键Join

时间:2018-05-02 00:37:12

标签: rethinkdb

我想知道如何在具有复合主键的表上进行连接。

通过在主键字段

中使用数组来实现组合键

表1

{id: key1, other: data}

表2

{id: [key1, key2], other: data}

所以我想要的是使用table1

加入table2.id [0]
r.table("table1").eq_join("id[0]", r.table("table2")).run()

1 个答案:

答案 0 :(得分:0)

你不能在这里使用eqJoin,因为它要求密钥严格相等(字符串不是数组,反之亦然)。 这也意味着所有连接操作中的最佳性能,因此这就是eqJoin仅用于接受字段名称而不是表达式的原因。 您似乎希望innerJoin可以处理您的情况,但牺牲一些性能(实际上我不确定真正的性能影响):

r.table('table1')
    .innerJoin(
        r.table('table2'),
        (doc1, doc2) => doc1('id').eq(doc2('id').nth(0))
    )

请注意,您可以使用您尝试在问题中使用的表达式("id[0]"仅表示eqJoin的字段名称。)