1

我有 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 而不是过滤器的情况下执行相同的操作。

4

1 回答 1

1

你可以做这样的事情(在 Python 中)

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

如果你想要与 with 完全相同的输出eq_join,你可以这样做

r.expr([r.table('child').get(10)]).eq_join('parent_id', r.table('parent'))
于 2014-05-22T06:49:41.173 回答