Spec-Zone.ru › RethinkDB ruby

Команда 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"
}

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

  • merge
  • filter

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

Spec-Zone.ru

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