Back to top

ReQL command: delete_at

Command syntax

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


Remove one or more elements from an array at a given index. Returns the modified array. (Note: delete_at operates on arrays, not documents; to delete documents, see the delete command.)

If only offset is specified, delete_at removes the element at that index. If both offset and end_offset are specified, delete_at removes the range of elements between offset and end_offset, inclusive of offset but not inclusive of end_offset.

If end_offset is specified, it must not be less than offset. Both offset and end_offset must be within the array’s bounds (i.e., if the array has 10 elements, an offset or end_offset of 10 or higher is invalid).

By using a negative offset you can delete from the end of the array. -1 is the last element in the array, -2 is the second-to-last element, and so on. You may specify a negative end_offset, although just as with a positive value, this will not be inclusive. The range (2,-1) specifies the third element through the next-to-last element.

Example: Delete the second element of an array.

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

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

Example: Delete the second and third elements of an array.

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

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

Example: Delete the next-to-last element of an array.

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

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

Example: Delete a comment on a post.

Given a post document such as:

    id: '4cf47834-b6f9-438f-9dec-74087e84eb63',
    title: 'Post title',
    author: 'Bob',
    comments: [
        { author: 'Agatha', text: 'Comment 1' },
        { author: 'Fred', text: 'Comment 2' }

The second comment can be deleted by using update and delete_at together.

    lambda post: { 'comments': post['comments'].delete_at(1) }

Get more help

Couldn't find what you were looking for?