ArangoDB Manual Pages


Accessing Hash Indexes via Http
If a suitable hash index exists, then /_api/simple/by-example will use this index to execute a query-by-example.

POST /_api/index
(creates a hash index)
POST /_api/index?collection=collection-name
Creates a hash index for the collection collection-name, if it does not already exist. The call expects an object containing the index details.
  • type: must be equal to "hash".
  • fields: A list of attribute paths.
  • unique: If true, then create a unique index.
If the index does not already exist and could be created, then a HTTP 201 is returned. If the index already exists, then a HTTP 200 is returned.If the collection-name is unknown, then a HTTP 404 is returned.If the collection already contains documents and you try to create a unique hash index in such a way that there are documents violating the uniqueness, then a HTTP 400 is returned.
Examples
Creating an unique constraint:
> curl --data @- -X POST --dump - http://localhost:8529/_api/index?collection=102901008
{ "type" : "hash", "unique" : true, "fields" : [ "a", "b" ] }

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

{
  "code": 201,
  "fields": [
    "a",
    "b"
  ],
  "id": "102901008/168054969",
  "type": "hash",
  "isNewlyCreated": true,
  "unique": true,
  "error": false
}
Creating a hash index:
> curl --data @- -X POST --dump - http://localhost:8529/_api/index?collection=105981200
{ "type" : "hash", "unique" : false, "fields" : [ "a", "b" ] }

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

{
  "code": 201,
  "fields": [
    "a",
    "b"
  ],
  "id": "105981200/171069625",
  "type": "hash",
  "isNewlyCreated": true,
  "unique": false,
  "error": false
}

PUT /_api/simple/by-example
(executes simple query "by-example")
PUT /_api/simple/by-example
This will find all documents matching a given example.The call expects a JSON hash array as body with the following attributes:
  • collection: The name of the collection to query.
  • example: The example.
  • 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
Matching an attribute:
> curl --data @- -X PUT --dump - http://localhost:8529/_api/simple/by-example
{ "collection" : "3179705695", "example" : [ { "i" : 1 } ] }

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

{
  "result": [
    { "a": { "k": 2, "j": 2 }, "i": 1, "_rev": "3181802847", "_id": "3179705695/3181802847" },
    { "a": { "j": 1 }, "i": 1, "_rev": "3181475167", "_id": "3179705695/3181475167" },
    { "a": { "k": 1, "j": 1 }, "i": 1, "_rev": "3181737311", "_id": "3179705695/3181737311" },
    { "i": 1, "_rev": "3181147487", "_id": "3179705695/3181147487" }
  ],
  "count": 4,
  "error": false,
  "hasMore": false,
  "code": 201
}
Matching an attribute which is a sub-document:
> curl --data @- -X PUT --dump - http://localhost:8529/_api/simple/by-example
{ "collection" : "3179705695", "example" : [ { "a" : { "j" : 1 } } ] }

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

{
  "result": [
    { "a": { "j": 1 }, "i": 1, "_rev": "3181475167", "_id": "3179705695/3181475167" }
  ],
  "count": 1,
  "error": false,
  "hasMore": false,
  "code": 201
}
Matching an attribute within a sub-document:
> curl --data @- -X PUT --dump - http://localhost:8529/_api/simple/by-example
{ "collection" : "3179705695", "example" : [ "a.j", 1 ] }

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

{
  "result": [
    { "a": { "j": 1 }, "i": 1, "_rev": "3181475167", "_id": "3179705695/3181475167" },
    { "a": { "k": 1, "j": 1 }, "i": 1, "_rev": "3181737311", "_id": "3179705695/3181737311" }
  ],
  "count": 2,
  "error": false,
  "hasMore": false,
  "code": 201
}

PUT /_api/simple/first-example
(executes simple query "first-example")
PUT /_api/simple/first-example
This will return the first document matching a given example.The call expects a JSON hash array as body with the following attributes:
  • collection: The name of the collection to query.
  • example: The example.
Returns a result containing the document or HTTP 404 if no document matched the example.
Examples
If a matching document was found:
> curl --data @- -X PUT --dump - http://localhost:8529/_api/simple/first-example
{ "collection" : "666351134", "example" : [ "a.j", 1, "a.k", 1 ] }

HTTP/1.1 200 OK
content-type: application/json

{
  "error": false,
  "code": 200,
  "document": { "_rev": "668382750", "_id": "666351134/668382750", "a": { "k": 1, "j": 1, "l" : 10 }, "i": 1 }
}
If no document was found:
> curl --data @- -X PUT --dump - http://localhost:8529/_api/simple/first-example
{ "collection" : "666351134", "example" : [ "a.j", 1, "a.k", 2 ] }

HTTP/1.1 404 Not Found
content-type: application/json

{
  "errorMessage": "no match",
  "error": true,
  "code": 404,
  "errorNum": 404
}