ArangoDB v3.10 reached End of Life (EOL) and is no longer supported.
This documentation is outdated. Please see the most recent stable version.
AQL query results
The result set of an AQL query is always an array of values, even if it returns a single element only
AQL queries and also subqueries each produce an array with zero or more elements.
An empty array typically means that no (matching) data was found to act upon, or that a write query didn’t specify anything to return.
FOR doc IN emptyCollection
RETURN doc // no documents
FOR u IN users
FILTER age == -1 // no matches
RETURN u
UPDATE { id: 2, active: true } IN users
// no RETURN operation
The result set of the above examples is empty:
[ ]
If there is a single result, you get an array with one element back, not the result value only.
FOR u IN users
LIMIT 1
RETURN u.name
[ "John" ]
If there are multiple results, you get an array with many elements back.
FOR u IN users
RETURN u.name
[
"John",
"Vanessa",
"Amy"
]
The individual values in the result array of a query may or may not have a homogeneous structure, depending on what is actually queried.
For example, the individual documents of a collection can use different sets of attribute names. When returning data from a collection with inhomogeneous documents without modification, the result values have an inhomogeneous structure, too. Each result value itself is a document:
FOR u IN users
RETURN u
[
{ "id": 1, "name": "John", "active": false },
{ "age": 32, "id": 2, "name": "Vanessa" },
{ "friends": [ "John", "Vanessa" ], "id": 3, "name": "Amy" }
]
However, if a fixed set of attributes from the collection is queried, then the query result values have a homogeneous structure. Each result value is still (a projection of) a document:
FOR u IN users
RETURN { "id": u.id, "name": u.name }
[
{ "id": 1, "name": "John" },
{ "id": 2, "name": "Vanessa" },
{ "id": 3, "name": "Amy" }
]
It is also possible to query scalar values only. In this case, the result set is an array of scalars, and each result value is a scalar value:
FOR u IN users
RETURN u.id
[ 1, 2, 3 ]