Spec-Zone.ru › RethinkDB ruby

Команда ReQL: delete

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

table.delete[({:durability => "hard", :return_changes => false, :ignore_write_hook => false})] → object
selection.delete[({:durability => "hard", :return_changes => false, :ignore_write_hook => false})] → object
singleSelection.delete[({:durability => "hard", :return_changes => false, :ignore_write_hook => false})] → object

Описание

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

Необязательные аргументы:

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

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

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

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

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

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

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

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

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

r.table("comments").filter({:id_post => 3}).delete.run(conn)

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

r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59").delete(:return_changes => true).run(conn)

Результат будет выглядеть так:

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

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

r.table("comments").delete(:durability => "soft").run(conn)

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

  • insert
  • update
  • replace

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

Spec-Zone.ru

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