Команда 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, и если у пользователя есть право config, игнорирует любой write hook, который мог бы запретить удаление.
Команда delete возвращает объект, содержащий следующие атрибуты:
-
deleted: количество удаленных документов. -
skipped: количество пропущенных документов.
Например, если вы пытаетесь удалить пакет документов, а другой одновременный запрос удаляет некоторые из этих документов, они будут считаться пропущенными. -
errors: количество ошибок, возникших при выполнении удаления. -
first_error: если возникли ошибки, содержит текст первой ошибки. -
inserted,replaced, иunchanged: все 0 для операции удаления. -
changes: еслиreturn_changesустановлено вTrue, это будет массив объектов, по одному для каждого затронутого объектомdeleteоперации. Каждый объект будет иметь два ключа:{"new_val": None, "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": None,
"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/python/delete/