Spec-Zone.ru › RethinkDB python

Команда ReQL: delete_at

Синтаксис команды

array.delete_at(offset [,end_offset]) → array

Описание

Удаляет один или несколько элементов из массива по заданному индексу. Возвращает изменённый массив. (Примечание: delete_at работает с массивами, а не документами; для удаления документов используйте команду delete.)

Если указан только offset, delete_at удаляет элемент по этому индексу. Если указаны offset и end_offset, delete_at удаляет диапазон элементов между offset и end_offset, включая offset, но не включая end_offset.

Если указан end_offset, он не должен быть меньше offset. Оба offset и end_offset должны быть в пределах границ массива (т.е., если массив имеет 10 элементов, offset или end_offset значения 10 или больше недопустимы).

Используя отрицательный offset, вы можете удалять элементы с конца массива. -1 — это последний элемент в массиве, -2 — предпоследний, и так далее. Вы можете указать отрицательный end_offset, хотя, как и с положительным значением, он не будет включаться. Диапазон (2,-1) указывает на третий элемент и до предпоследнего.

Пример: Удаление второго элемента массива.

> r.expr(['a','b','c','d','e','f']).delete_at(1).run(conn)

['a', 'c', 'd', 'e', 'f']

Пример: Удаление второго и третьего элементов массива.

> r.expr(['a','b','c','d','e','f']).delete_at(1,3).run(conn)

['a', 'd', 'e', 'f']

Пример: Удаление предпоследнего элемента массива.

> r.expr(['a','b','c','d','e','f']).delete_at(-2).run(conn)

['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 и delete_at вместе.

r.table('posts').get('4cf47834-b6f9-438f-9dec-74087e84eb63').update(
    lambda post: { 'comments': post['comments'].delete_at(1) }
).run(conn)

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

  • insert_at
  • splice_at
  • change_at

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

Spec-Zone.ru

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