Referenzfunktionen
Der Typ REFERENCE fungiert als „Zeiger“ auf andere Dokumente in der Datenbank (oder sogar auf andere Datenbanken). Mit den folgenden Funktionen kann dieser Typ während der Abfrageausführung bearbeitet werden.
| Name | Beschreibung |
COLLECTION_ID
|
Gibt die ID der Blatt-Collection in der angegebenen Referenz zurück |
DOCUMENT_ID
|
Gibt die ID des Dokuments in der angegebenen Referenz zurück |
PARENT
|
Gibt die übergeordnete Referenz zurück |
REFERENCE_SLICE
|
Gibt eine Teilmenge von Segmenten aus der angegebenen Referenz zurück |
COLLECTION_ID
Syntax:
collection_id(ref: REFERENCE) -> STRING
Beschreibung:
Gibt die Blatt-Collection-ID der angegebenen REFERENCE zurück.
Beispiele:
ref |
collection_id(ref) |
|---|---|
users/user1 |
"users" |
users/user1/posts/post1 |
"posts" |
DOCUMENT_ID
Syntax:
document_id(ref: REFERENCE) -> ANY
Beschreibung:
Gibt die Dokument-ID der angegebenen REFERENCE zurück.
Beispiele:
ref |
document_id(ref) |
|---|---|
users/user1 |
"user1" |
users/user1/posts/post1 |
"post1" |
PARENT
Syntax:
parent(ref: REFERENCE) -> REFERENCE
Beschreibung:
Gibt die übergeordnete REFERENCE der angegebenen Referenz oder NULL zurück, wenn die Referenz bereits eine Stammreferenz ist.
Beispiele:
ref |
parent(ref) |
|---|---|
/ |
NULL |
users/user1 |
/ |
users/user1/posts/post1 |
users/user1 |
REFERENCE_SLICE
Syntax:
reference_slice(ref: REFERENCE, offset: INT, length: INT) -> REFERENCE
Beschreibung:
Eine REFERENCE ist eine Liste von (collection_id, document_id)-Tupeln. Mit dieser Funktion können Sie eine Ansicht dieser Liste abrufen, genau wie mit array_slice(...).
Gibt eine neue REFERENCE zurück, die eine Teilmenge der Segmente der angegebenen ref ist.
offset: Der Startindex (0-basiert) des Slice. Wenn er negativ ist, ist er ein Offset vom Ende der Referenz.length: Die Anzahl der Segmente, die im Slice enthalten sein sollen.
Beispiele:
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 |