Команда ReQL: deleteAt
Синтаксис команды
array.deleteAt(offset [,endOffset]) → array
Описание
Удаляет один или несколько элементов из массива по заданному индексу. Возвращает измененный массив. (Примечание: deleteAt работает с массивами, а не с документами; для удаления документов используйте команду delete.)
Если указан только offset, deleteAt удаляет элемент по этому индексу. Если указаны как offset, так и endOffset, deleteAt удаляет диапазон элементов между offset и endOffset, включая offset, но не включая endOffset.
Если указан endOffset, он не должен быть меньше offset. Оба значения offset и endOffset должны находиться в пределах границ массива (то есть, если массив содержит 10 элементов, значение offset или endOffset 10 или больше является недопустимым).
Используя отрицательный offset, вы можете удалять элементы с конца массива. -1 — это последний элемент в массиве, -2 — предпоследний, и так далее. Вы можете указать отрицательный endOffset, хотя, как и с положительным значением, он не включается в удаление. Диапазон (2,-1) определяет элементы с третьего по предпоследний.
Пример: Удаление второго элемента массива.
r.expr(r.array("a", "b", "c", "d", "e", "f")).deleteAt(1).run(conn);
// Result:
["a", "c", "d", "e", "f"]
Пример: Удаление второго и третьего элементов массива.
r.expr(r.array("a", "b", "c", "d", "e", "f")).deleteAt(1, 3).run(conn);
// Result:
["a", "d", "e", "f"]
Пример: Удаление предпоследнего элемента массива.
r.expr(r.array("a", "b", "c", "d", "e", "f")).deleteAt(-2).run(conn);
// Result:
["a", "b", "c", "d", "f"]
Пример: Удаление комментария на публикации.
Предположим, что документ публикации выглядит так:
{
"id": "4cf47834-b6f9-438f-9dec-74087e84eb63",
"title": "Post title",
"author": "Bob",
"comments": [
{ "author": "Agatha", "text": "Comment 1" },
{ "author": "Fred", "text": "Comment 2" }
]
}
Второй комментарий можно удалить, используя update и deleteAt вместе.
r.table("posts").get("4cf47834-b6f9-438f-9dec-74087e84eb63").update(
row -> r.hashMap("comments", row.g("comments").deleteAt(1)
).run(conn);
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/delete_at/