Spec-Zone.ru › RethinkDB python

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

Spec-Zone.ru

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