Команда 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({ 'data': { 'age': 19, 'job': 'Engineer' } }).run(conn)
{
"id": 1,
"name": "Alice",
"data": {
"age": 19,
"city": "Dallas",
"job": "Engineer"
}
}
Это сохранит city и другие существующие поля. Но для замены всего документа data новым объектом, используйте literal.
Пример: Замените один вложенный документ другим, а не сливайте поля.
r.table('users').get(1).update({ 'data': r.literal({ 'age': 19, 'job': 'Engineer' }) }).run(conn)
{
"id": 1,
"name": "Alice",
"data": {
"age": 19,
"job": "Engineer"
}
}
Пример: Используйте literal для удаления поля из документа.
r.table('users').get(1).merge({ "data": r.literal() }).run(conn)
{
"id": 1,
"name": "Alice"
}
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/python/literal/