Команда ReQL: delete
Синтаксис команды
table.delete() → object selection.delete() → object singleSelection.delete() → object
Описание
Удаляет один или несколько документов из таблицы.
Можно передать следующие опции с помощью optArg:
-
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, который мог бы запретить удаление.
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);
Пример: Удаление всех документов из таблицы comments.
r.table("comments").delete().run(conn);
Пример: Удаление всех комментариев, где поле idPost равно 3.
r.table("comments").filter(r.hashMap("idPost", 3)).delete().run(conn);
Пример: Удаление одного документа из таблицы comments и возврат его значения.
r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59")
.delete().optArg("return_changes", true).run(conn);
Результат выглядит так:
{
"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().optArg("durability", "soft").run(conn);
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/delete/