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