我是rethinkdb的新手并且遇到了麻烦。 假设我有以下对象结构:
Table A: [{ 'id': '1', 'b_list': ['11', '12'] }] Table B: [{ 'id': '11', 'value': 'somevalue1' },{ 'id': '12', 'value': 'somevalue2' }]
因此“A”的实例保持与两个“B”实例的关系。
我应该在rethinkdb中执行哪些查询来检索以下响应?
[{ 'id': '1', 'b_list': [ { 'id': '11', 'value': 'somevalue1' },{ 'id': '12', 'value': 'somevalue2' } ] }]
我希望在响应中看到B的实例而不是它们的ID,我不希望保存此更改。
答案 0 :(得分:1)
执行此操作的最佳方法是eq_join
,如此:
r.table("A")
.map(lambda x:
x.merge({
"b_list" :
x["b_list"].eq_join(lambda x: x, r.table("B"))["right"]})
对于单个文档:
r.table("A").get(pk)
.do(lambda x:
x.merge({
"b_list" :
x["b_list"].eq_join(lambda x: x, r.table("B"))["right"]})