Команда 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"
}
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/literal/