Spec-Zone.ru › RethinkDB python

Команда ReQL: merge

Синтаксис команды

singleSelection.merge([object | function, object | function, ...]) → object
object.merge([object | function, object | function, ...]) → object
sequence.merge([object | function, object | function, ...]) → stream
array.merge([object | function, object | function, ...]) → array

Описание

Объединяет два или более объектов, создавая новый объект со свойствами из всех исходных. При конфликте имён полей предпочтение отдаётся полям в правом объекте списка аргументов merge также принимает функцию подзапроса, возвращающую объект, который будет использоваться аналогично функции map.

Пример: Наделить Тора боевым снаряжением.

r.table('marvel').get('thor').merge(
    r.table('equipment').get('hammer'),
    r.table('equipment').get('pimento_sandwich')
).run(conn)

Пример: Наделить каждого героя боевым снаряжением, используя функцию подзапроса для получения их оружия.

r.table('marvel').merge(lambda hero:
    { 'weapons': r.table('weapons').get(hero['weapon_id']) }
).run(conn)

Пример: Используйте merge для объединения каждого поста блога с его комментариями.

Обратите внимание, что последовательность, объединяемую — в этом примере, комментарии — необходимо преобразовать из выборки в массив. Без coerce_to операция вызовет ошибку («Ожидаемый тип DATUM, а найден SELECTION»).

r.table('posts').merge(lambda post:
    { 'comments': r.table('comments').get_all(post['id'],
        index='post_id').coerce_to('array') }
).run(conn)

Пример: Объединение может использоваться рекурсивно для модификации объектов внутри объектов.

r.expr({'weapons' : {'spectacular graviton beam' : {'dmg' : 10, 'cooldown' : 20}}}).merge(
    {'weapons' : {'spectacular graviton beam' : {'dmg' : 10}}}
).run(conn)

Пример: Для замены вложенного объекта другим объектом можно использовать ключевое слово literal.

r.expr({'weapons' : {'spectacular graviton beam' : {'dmg' : 10, 'cooldown' : 20}}}).merge(
    {'weapons' : r.literal({'repulsor rays' : {'dmg' : 3, 'cooldown' : 0}})}
).run(conn)

Пример: С помощью literal также можно удалять ключи из объекта.

r.expr({'weapons' : {'spectacular graviton beam' : {'dmg' : 10, 'cooldown' : 20}}}).merge(
    {'weapons' : {'spectacular graviton beam' : r.literal()}}
).run(conn)

Связанные команды

  • pluck
  • without
  • map

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/python/merge/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API