mirror of https://gitee.com/bigwinds/arangodb
44 lines
2.0 KiB
Plaintext
44 lines
2.0 KiB
Plaintext
Accessing data from collections
|
|
===============================
|
|
|
|
Collection data can be accessed by specifying a collection name in a query. A
|
|
collection can be understood as an array of documents, and that is how they are
|
|
treated in AQL. Documents from collections are normally accessed using the
|
|
*FOR* keyword. Note that when iterating over documents from a collection, the
|
|
order of documents is undefined. To traverse documents in an explicit and
|
|
deterministic order, the *SORT* keyword should be used in addition.
|
|
|
|
Data in collections is stored in documents, with each document potentially
|
|
having different attributes than other documents. This is true even for
|
|
documents of the same collection.
|
|
|
|
It is therefore quite normal to encounter documents that do not have some or all
|
|
of the attributes that are queried in an AQL query. In this case, the
|
|
non-existing attributes in the document will be treated as if they would exist
|
|
with a value of *null*. That means that comparing a document attribute to
|
|
*null* will return true if the document has the particular attribute and the
|
|
attribute has a value of *null*, or that the document does not have the
|
|
particular attribute at all.
|
|
|
|
For example, the following query will return all documents from the collection
|
|
*users* that have a value of *null* in the attribute *name*, plus all documents
|
|
from *users* that do not have the *name* attribute at all:
|
|
|
|
FOR u IN users
|
|
FILTER u.name == null
|
|
RETURN u
|
|
|
|
Furthermore, *null* is less than any other value (excluding *null* itself). That
|
|
means documents with non-existing attributes may be included in the result
|
|
when comparing attribute values with the less than or less equal operators.
|
|
|
|
For example, the following query will return all documents from the collection
|
|
*users* that have an attribute *age* with a value less than *39*, but also all
|
|
documents from the collection that do not have the attribute *age* at all.
|
|
|
|
FOR u IN users
|
|
FILTER u.age < 39
|
|
RETURN u
|
|
|
|
This behavior should always be taken into account when writing queries.
|