1
0
Fork 0
arangodb/Documentation/Books/AQL/Functions
Simran Brucherseifer 659a45d3a8 Documentation improvements 2016-07-25 18:43:30 +02:00
..
Array.mdpp Documentation improvements 2016-07-25 18:43:30 +02:00
Date.mdpp Documentation corrections (mostly AQL) 2016-05-24 18:46:02 +02:00
Document.mdpp Documentation improvements 2016-07-25 18:43:30 +02:00
Fulltext.mdpp Rename Users documentation to Manual 2016-05-24 16:09:21 +02:00
Geo.mdpp Rename Users documentation to Manual 2016-05-24 16:09:21 +02:00
Miscellaneous.mdpp Add COUNT() and RANGE() to documentation, some improvements 2016-06-03 19:03:36 +02:00
Numeric.mdpp Add COUNT() and RANGE() to documentation, some improvements 2016-06-03 19:03:36 +02:00
README.mdpp Documentation improvements 2016-07-25 18:43:30 +02:00
String.mdpp Documentation improvements 2016-07-25 18:43:30 +02:00
TypeCast.mdpp Add COUNT() and RANGE() to documentation, some improvements 2016-06-03 19:03:36 +02:00

README.mdpp

!CHAPTER Functions

AQL supports functions to allow more complex computations. Functions can be
called at any query position where an expression is allowed. The general
function call syntax is:

```js
FUNCTIONNAME(arguments)
```

where *FUNCTIONNAME* is the name of the function to be called, and *arguments*
is a comma-separated list of function arguments. If a function does not need any
arguments, the argument list can be left empty. However, even if the argument
list is empty the parentheses around it are still mandatory to make function
calls distinguishable from variable names.

Some example function calls:

```js
HAS(user, "name")
LENGTH(friends)
COLLECTIONS()
```

In contrast to collection and variable names, function names are case-insensitive, 
i.e. *LENGTH(foo)* and *length(foo)* are equivalent.

!SUBSUBSECTION Extending AQL
 
It is possible to extend AQL with user-defined functions. These functions need to
be written in JavaScript, and be registered before usage in a query. Please refer
to [Extending AQL](../Extending/index.html) for more details on this.

By default, any function used in an AQL query will be sought in the built-in 
function namespace *_aql*. This is the default namespace that contains all AQL
functions that are shipped with ArangoDB. 
To refer to a user-defined AQL function, the function name must be fully qualified
to also include the user-defined namespace. The *::* symbol is used as the namespace
separator:

```js
MYGROUP::MYFUNC()
MYFUNCTIONS::MATH::RANDOM()
```

As all AQL function names, user function names are also case-insensitive.