Spec-Zone.ru › RethinkDB java

Команда 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(
    hero -> r.hashMap("weapons", r.table("weapons").get(hero.g("weapon_id")))
).run(conn);

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

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

r.table("posts").merge(
    post -> r.hashMap("comments", r.table("comments").getAll(post.g("id"))
                      .optArg("index", "post_id").coerceTo("array"))
).run(conn);

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

r.expr(r.hashMap("weapons", r.hashMap("spectacular graviton beam",
    r.hashMap("dmg", 10).with("cooldown", 20))))
 .merge(r.hashMap("weapons", r.hashMap("spectacular graviton beam",
    r.hashMap("dmg", 10))))
 .run(conn);

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

r.expr(r.hashMap("weapons", r.hashMap("spectacular graviton beam",
    r.hashMap("dmg", 10).with("cooldown", 20))))
 .merge(r.hashMap("weapons", r.literal(r.hashMap("repulsor rays",
    r.hashMap("dmg", 3).with("cooldown", 0)))))
 .run(conn);

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

r.expr(r.hashMap("weapons", r.hashMap("spectacular graviton beam",
    r.hashMap("dmg", 10).with("cooldown", 20))))
 .merge(r.hashMap("weapons", r.hashMap("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/java/merge/

Spec-Zone.ru

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