Команда 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)
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/ruby/delete/