Spec-Zone.ru › RethinkDB java

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

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

  • insertAt
  • spliceAt
  • changeAt

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

Spec-Zone.ru

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