1
0
Fork 0
arangodb/Documentation/Books/AQL/Examples
Simran Brucherseifer 659a45d3a8 Documentation improvements 2016-07-25 18:43:30 +02:00
..
CombiningGraphTraversals.mdpp Rename Users documentation to Manual 2016-05-24 16:09:21 +02:00
CombiningQueries.mdpp Re-organize Users and AQL documentation 2016-05-02 15:53:13 +02:00
Counting.mdpp Update links in AQL docs, some reformatting 2016-05-18 22:39:05 +02:00
DataModificationQueries.mdpp Re-organize Users and AQL documentation 2016-05-02 15:53:13 +02:00
Grouping.mdpp Minor reformatting of docs 2016-06-23 12:19:24 +02:00
Join.mdpp Update links in AQL docs, some reformatting 2016-05-18 22:39:05 +02:00
ProjectionsAndFilters.mdpp Update links in AQL docs, some reformatting 2016-05-18 22:39:05 +02:00
QueriesNoCollections.mdpp Documentation corrections (mostly AQL) 2016-05-24 18:46:02 +02:00
README.mdpp Documentation improvements 2016-07-25 18:43:30 +02:00

README.mdpp

!CHAPTER Usual Query Patterns Examples

Those pages contain some common query patterns with examples. For better
understandability the query results are also included directly below each query.

Normally you would want to run queries on data stored in collections. This section
will provide several examples for that.

Some of the following example queries are executed on a collection 'users' with the data provided here below.


!SUBSECTION Things to consider when running queries on collections

Note that all documents created in any collections will automatically get the
following server-generated attributes:

- *_id*: A unique id, consisting of [collection name](../../Manual/Appendix/Glossary.html#collection-name)
  and a server-side sequence value
- *_key*: The server sequence value
- *_rev*: The document's revision id

Whenever you run queries on the documents in collections, don't be surprised if
these additional attributes are returned as well.

Please also note that with real-world data, you might want to create additional
indexes on the data (left out here for brevity). Adding indexes on attributes that are
used in *FILTER* statements may considerably speed up queries. Furthermore, instead of
using attributes such as *id*, *from* and *to*, you might want to use the built-in
*_id*, *_from* and *_to* attributes. Finally, [edge collection](../../Manual/Appendix/Glossary.html#edge-collection)s provide a nice way of
establishing references / links between documents. These features have been left out here 
for brevity as well.


!SUBSECTION Example data

Some of the following example queries are executed on a collection *users*
with the following initial data:

```json
[ 
  { "id": 100, "name": "John", "age": 37, "active": true, "gender": "m" },
  { "id": 101, "name": "Fred", "age": 36, "active": true, "gender": "m" },
  { "id": 102, "name": "Jacob", "age": 35, "active": false, "gender": "m" },
  { "id": 103, "name": "Ethan", "age": 34, "active": false, "gender": "m" },
  { "id": 104, "name": "Michael", "age": 33, "active": true, "gender": "m" },
  { "id": 105, "name": "Alexander", "age": 32, "active": true, "gender": "m" },
  { "id": 106, "name": "Daniel", "age": 31, "active": true, "gender": "m" },
  { "id": 107, "name": "Anthony", "age": 30, "active": true, "gender": "m" },
  { "id": 108, "name": "Jim", "age": 29, "active": true, "gender": "m" },
  { "id": 109, "name": "Diego", "age": 28, "active": true, "gender": "m" },
  { "id": 200, "name": "Sophia", "age": 37, "active": true, "gender": "f" },
  { "id": 201, "name": "Emma", "age": 36,  "active": true, "gender": "f" },
  { "id": 202, "name": "Olivia", "age": 35, "active": false, "gender": "f" },
  { "id": 203, "name": "Madison", "age": 34, "active": true, "gender": "f" },
  { "id": 204, "name": "Chloe", "age": 33, "active": true, "gender": "f" },
  { "id": 205, "name": "Eva", "age": 32, "active": false, "gender": "f" },
  { "id": 206, "name": "Abigail", "age": 31, "active": true, "gender": "f" },
  { "id": 207, "name": "Isabella", "age": 30, "active": true, "gender": "f" },
  { "id": 208, "name": "Mary", "age": 29, "active": true, "gender": "f" },
  { "id": 209, "name": "Mariah", "age": 28, "active": true, "gender": "f" }
]
```

For some of the examples, we'll also use a collection *relations* to store
relationships between users. The example data for *relations* are as follows:

```json
[
  { "from": 209, "to": 205, "type": "friend" },
  { "from": 206, "to": 108, "type": "friend" },
  { "from": 202, "to": 204, "type": "friend" },
  { "from": 200, "to": 100, "type": "friend" },
  { "from": 205, "to": 101, "type": "friend" },
  { "from": 209, "to": 203, "type": "friend" },
  { "from": 200, "to": 203, "type": "friend" },
  { "from": 100, "to": 208, "type": "friend" },
  { "from": 101, "to": 209, "type": "friend" },
  { "from": 206, "to": 102, "type": "friend" },
  { "from": 104, "to": 100, "type": "friend" },
  { "from": 104, "to": 108, "type": "friend" },
  { "from": 108, "to": 209, "type": "friend" },
  { "from": 206, "to": 106, "type": "friend" },
  { "from": 204, "to": 105, "type": "friend" },
  { "from": 208, "to": 207, "type": "friend" },
  { "from": 102, "to": 108, "type": "friend" },
  { "from": 207, "to": 203, "type": "friend" },
  { "from": 203, "to": 106, "type": "friend" },
  { "from": 202, "to": 108, "type": "friend" },
  { "from": 201, "to": 203, "type": "friend" },
  { "from": 105, "to": 100, "type": "friend" },
  { "from": 100, "to": 109, "type": "friend" },
  { "from": 207, "to": 109, "type": "friend" },
  { "from": 103, "to": 203, "type": "friend" },
  { "from": 208, "to": 104, "type": "friend" },
  { "from": 105, "to": 104, "type": "friend" },
  { "from": 103, "to": 208, "type": "friend" },
  { "from": 203, "to": 107, "type": "boyfriend" },
  { "from": 107, "to": 203, "type": "girlfriend" },
  { "from": 208, "to": 109, "type": "boyfriend" },
  { "from": 109, "to": 208, "type": "girlfriend" },
  { "from": 106, "to": 205, "type": "girlfriend" },
  { "from": 205, "to": 106, "type": "boyfriend" },
  { "from": 103, "to": 209, "type": "girlfriend" },
  { "from": 209, "to": 103, "type": "boyfriend" },
  { "from": 201, "to": 102, "type": "boyfriend" },
  { "from": 102, "to": 201, "type": "girlfriend" },
  { "from": 206, "to": 100, "type": "boyfriend" },
  { "from": 100, "to": 206, "type": "girlfriend" }
]
```