Spec-Zone.ru › RethinkDB java

Команда ReQL: literal

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

r.literal(object) → special

Описание

Заменяет объект в поле вместо слияния его с существующим объектом в операции merge или update. Использование literal без аргументов в операции merge или update удалит соответствующее поле.

Предположим, ваша таблица пользователей имеет следующую структуру:

[
    {
        "id": 1,
        "name": "Alice",
        "data": {
            "age": 18,
            "city": "Dallas"
        }
    }       
    ...
]

Использование update для изменения поля data обычно сливает вложенные документы:

r.table("users").get(1)
 .update(r.hashMap("data", r.hashMap("age", 19).with("job", "Engineer")))
 .run(conn);

// Result:
{
    "id": 1,
    "name": "Alice",
    "data": {
        "age": 19,
        "city": "Dallas",
        "job": "Engineer"
    }
}       

Это сохранит city и другие существующие поля. Но для замены всего документа data новым объектом используйте literal.

Пример: Замена одного вложенного документа другим вместо слияния полей.

r.table("users").get(1)
 .update(r.hashMap("data", r.literal(r.hashMap("age", 19).with("job", "Engineer"))))
 .run(conn);

// Result:
{
    "id": 1,
    "name": "Alice",
    "data": {
        "age": 19,
        "job": "Engineer"
    }
}       

Пример: Использование literal для удаления поля из документа.

r.table("users").get(1).merge(r.hashMap("data", r.literal())).run(conn);

// Result:
{
    "id": 1,
    "name": "Alice"
}

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

  • merge
  • filter

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

Spec-Zone.ru

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