Reference Functions Reference
Reference Functions
The REFERENCE type acts as a "pointer" to other documents in the database (or
even other databases). The following functions allow manipulating this type
during query execution.
| Name | Description |
COLLECTION_ID
|
Returns the ID of the leaf collection in the given reference |
DOCUMENT_ID
|
Returns the ID of the document in the given reference |
PARENT
|
Returns the parent reference |
REFERENCE_SLICE
|
Returns a subset of segments from the given reference |
COLLECTION_ID
Syntax:
collection_id(ref: REFERENCE) -> STRING
Description:
Returns the leaf collection ID of the given REFERENCE.
Examples:
ref |
collection_id(ref) |
|---|---|
users/user1 |
"users" |
users/user1/posts/post1 |
"posts" |
DOCUMENT_ID
Syntax:
document_id(ref: REFERENCE) -> ANY
Description:
Returns the document ID of the given REFERENCE.
Examples:
ref |
document_id(ref) |
|---|---|
users/user1 |
"user1" |
users/user1/posts/post1 |
"post1" |
PARENT
Syntax:
parent(ref: REFERENCE) -> REFERENCE
Description:
Returns the parent REFERENCE of the given reference, or NULL if the ref is
a root reference already.
Examples:
ref |
parent(ref) |
|---|---|
/ |
NULL |
users/user1 |
/ |
users/user1/posts/post1 |
users/user1 |
REFERENCE_SLICE
Syntax:
reference_slice(ref: REFERENCE, offset: INT, length: INT) -> REFERENCE
Description:
A REFERENCE is a list of (collection_id, document_id) tuples and this allows
getting a view of that list, just like array_slice(...).
Returns a new REFERENCE that is a subset of the segments of the given ref.
offset: The starting index (0-based) of the slice. If negative, it is an offset from the end of the reference.length: The number of segments to include in the slice.
Examples:
ref |
offset |
length |
reference_slice(ref, offset, length) |
|---|---|---|---|
a/1/b/2/c/3 |
1L | 2L | b/2/c/3 |
a/1/b/2/c/3 |
0L | 2L | a/1/b/2 |
a/1/b/2/c/3 |
-2L | 2L | c/3 |
What's next
- See the Pipeline Queries overview