Команда 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/ruby/literal/