我想知道如何在具有复合主键的表上进行连接。
通过在主键字段
中使用数组来实现组合键表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()
答案 0 :(得分:0)
你不能在这里使用eqJoin
,因为它要求密钥严格相等(字符串不是数组,反之亦然)。
这也意味着所有连接操作中的最佳性能,因此这就是eqJoin
仅用于接受字段名称而不是表达式的原因。
您似乎希望innerJoin
可以处理您的情况,但牺牲一些性能(实际上我不确定真正的性能影响):
r.table('table1')
.innerJoin(
r.table('table2'),
(doc1, doc2) => doc1('id').eq(doc2('id').nth(0))
)
请注意,您可以使用您尝试在问题中使用的表达式("id[0]"
仅表示eqJoin
的字段名称。)