Команда 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, можно удалять элементы с конца массива. -2 — это последний элемент в массиве, -2 — предпоследний элемент, и так далее. Можно указать отрицательный endOffset, хотя, как и в случае с положительным значением, он не включается. Диапазон (2,-1) указывает на третий элемент и все последующие до предпоследнего.
Пример: Удаление второго элемента массива.
> r(['a','b','c','d','e','f']).deleteAt(1).run(conn, callback)
// result passed to callback
['a', 'c', 'd', 'e', 'f']
Пример: Удаление второго и третьего элементов массива.
> r(['a','b','c','d','e','f']).deleteAt(1,3).run(conn, callback)
// result passed to callback
['a', 'd', 'e', 'f']
Пример: Удаление предпоследнего элемента массива.
> r(['a','b','c','d','e','f']).deleteAt(-2).run(conn, callback)
// result passed to callback
['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({
comments: r.row('comments').deleteAt(1)
}).run(conn, callback)
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/delete_at/