eq_join как функциональность на одном объекте

У меня есть 2 таблицы дочерняя и родительская:

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

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

Я знаю идентификатор дочернего объекта и хочу запросить дочерний объект, объединенный с родительским объектом.

Есть ли способ сделать эквивалент:

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.


person Anant    schedule 22.05.2014    source источник


Ответы (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'))
person neumino    schedule 22.05.2014
comment
Подход слияния — это именно то, что мне было нужно! Я просто не знал, как я могу получить доступ к ребенку в слиянии. Большое спасибо - person Anant; 22.05.2014