Spec-Zone.ru › RethinkDB javascript

Команда ReQL: delete

Синтаксис команды

table.delete([{durability: "hard", returnChanges: false, ignoreWriteHook: false}]) → object
selection.delete([{durability: "hard", returnChanges: false, ignoreWriteHook: false}]) → object
singleSelection.delete([{durability: "hard", returnChanges: false, ignoreWriteHook: false}]) → object

Описание

Удаляет один или несколько документов из таблицы.

Доступны следующие необязательные аргументы:

  • durability: возможные значения hard и soft. Этот параметр переопределит настройку живучести таблицы или запроса (установленную в run). В режиме мягкой живучести RethinkDB подтвердит запись сразу после её получения, но до её фиксации на диске.
  • returnChanges:
    • true: возвращает массив changes, состоящий из объектов old_val/new_val, описывающих внесённые изменения, включая только те документы, которые были фактически обновлены.
    • false: не возвращает массив changes (по умолчанию).
    • "always": работает как true, но включает все документы, которые команда пыталась обновить, независимо от успешности обновления. (Такое поведение было в true до версии 2.0.)
  • ignoreWriteHook: Если true, и если у пользователя есть разрешение на конфигурацию, игнорирует любой write hook, который мог бы запретить удаление.

Команда delete возвращает объект, содержащий следующие атрибуты:

  • deleted: количество удалённых документов.
  • skipped: количество пропущенных документов.
    Например, если вы пытаетесь удалить пакет документов, а другой одновременный запрос удаляет некоторые из этих документов в первую очередь, они будут учтены как пропущенные.
  • errors: количество ошибок, возникших во время выполнения удаления.
  • first_error: Если возникли ошибки, содержит текст первой ошибки.
  • inserted, replaced, и unchanged: все 0 для операции удаления.
  • changes: если returnChanges установлено в true, это будет массив объектов, по одному для каждого затронутого объекта delete операции. Каждый объект будет иметь два ключа: {new_val: null, old_val: <old value>}.

Операции записи RethinkDB будут выбрасывать исключения только в случае ошибок до выполнения каких-либо записей. Другие ошибки будут перечислены в first_error, и errors будет установлено в ненулевое значение. Для корректной обработки ошибок с этим термином код должен обрабатывать как исключения, так и проверять значение возвращаемого errors!

Пример: Удаление одного документа из таблицы comments.

r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59").delete().run(conn, callback)

Пример: Удаление всех документов из таблицы comments.

r.table("comments").delete().run(conn, callback)

Пример: Удаление всех комментариев, где поле idPost имеет значение 3.

r.table("comments").filter({idPost: 3}).delete().run(conn, callback)

Пример: Удаление одного документа из таблицы comments и возврат его значения.

r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59").delete({returnChanges: true}).run(conn, callback)

Результат будет выглядеть следующим образом:

{
    deleted: 1,
    errors: 0,
    inserted: 0,
    changes: [
        {
            new_val: null,
            old_val: {
                id: "7eab9e63-73f1-4f33-8ce4-95cbea626f59",
                author: "William",
                comment: "Great post",
                idPost: 3
            }
        }
    ],
    replaced: 0,
    skipped: 0,
    unchanged: 0
}

Пример: Удаление всех документов из таблицы comments без ожидания, пока операция не будет выведена на диск.

r.table("comments").delete({durability: "soft"}).run(conn, callback)

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

  • insert
  • update
  • replace

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

Spec-Zone.ru

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