eq_join类似于单个对象的功能

时间:2014-05-22 05:48:51

标签: rethinkdb rethinkdb-python

我有2个孩子和父母的桌子:

child
    {id:1, parent_id: 10, name:"blah" ...}

parent
    {id:10, name: "parent blah" ....}

我知道子对象的id,并且想要查询与父对象连接的子对象。

有没有办法可以做到相当于:

r.table('child').get(10).eq_join('parent_id', r.table('parent'))

eq_joins可以很好地处理过滤器操作的结果,因为它返回一个序列。我想在使用get

时执行类似的操作

所以形式为eq_join:

r.table('child').filter({'id': 1}).eq_join('parent_id', r.table('parent'))

给我记录

{left: {id: 10, parent_id:1, ...},
right: {id:1, ....}}

对序列非常有用。

我想在使用get而不是filter的情况下执行相同的操作。

1 个答案:

答案 0 :(得分:1)

你可以做类似的事情(在Python中)

r.table('child').get(10).merge(lambda child:
    {
        'parent': r.table('parents').get(child['parent_id'])
    }
)

如果您想要与eq_join完全相同的输出,则可以执行

r.expr([r.table('child').get(10)]).eq_join('parent_id', r.table('parent'))