Spec-Zone.ru › RethinkDB java

Команда 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);

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

  • insert
  • update
  • replace

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

Spec-Zone.ru

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