ArangoDB

Accessing Skip-List Indexes via Http

If a suitable skip-list index exists, then /_api/simple/range will use this index to execute a range query.




POST /_api/index (creates a hash index)

POST /_api/index?collection=collection-identifier

Creates a skip-list index for the collection collection-identifier, if it does not already exist. The call expects an object containing the index details.

  • type: must be equal to "skiplist".
  • fields: A list of attribute paths.
  • unique: If true, then create a unique index.

If the index does not already exists and could be created, then a HTTP 201 is returned. If the index already exists, then a HTTP 200 is returned.

If the collection-identifier is unknown, then a HTTP 404 is returned. It is possible to specify a name instead of an identifier.

If the collection already contains documents and you try to create a unique skip-list index in such a way that there are documents violating the uniqueness, then a HTTP 400 is returned.

Examples

Creating a skiplist:

> curl --data @- -X POST --dump - http://localhost:8529/_api/index?collection=109061392
{ "type" : "skiplist", "unique" : false, "fields" : [ "a", "b" ] }

HTTP/1.1 201 Created
content-type: application/json

{
  "code": 201,
  "fields": [
    "a",
    "b"
  ],
  "id": "109061392/173166777",
  "type": "skiplist",
  "isNewlyCreated": true,
  "unique": false,
  "error": false
}


PUT /_api/simple/range (executes simple range query)

PUT /_api/simple/range

This will find all documents within a given range. You must declare a skip-list index on the attribute in order to be able to use a range query.

The call expects a JSON hash array as body with the following attributes:

  • collection: The identifier or name of the collection to query.
  • attribute: The attribute path to check.
  • left: The lower bound.
  • right: The upper bound.
  • closed: If true, use intervall including left and right, otherwise exclude right, but include left.
  • skip: The documents to skip in the query. (optional)
  • limit: The maximal amount of documents to return. (optional)

Returns a cursor containing the result, see HTTP Interface for AQL Query Cursors for details.

Examples

> curl --data @- -X PUT --dump - http://localhost:8529/_api/simple/range
{ "collection" : "6328369086", "attribute" : "i", "left" : 2, "right" : 4 }

HTTP/1.1 201 Created
content-type: application/json

{
  "code": 201,
  "result": [
    { "_id": "6328369086/6329876414", "i": 2, "_rev": 6329876414 },
    { "_id": "6328369086/6329941950", "i": 3, "_rev": 6329941950 }
  ],
  "count": 2,
  "hasMore": false,
  "error": false
}