Funciones de referencia
El tipo REFERENCE actúa como un "puntero" a otros documentos de la base de datos (o incluso a otras bases de datos). Las siguientes funciones permiten manipular este tipo durante la ejecución de la consulta.
| Nombre | Descripción |
COLLECTION_ID
|
Devuelve el ID de la colección de hojas en la referencia dada. |
DOCUMENT_ID
|
Devuelve el ID del documento en la referencia determinada. |
PARENT
|
Devuelve la referencia principal. |
REFERENCE_SLICE
|
Devuelve un subconjunto de segmentos de la referencia proporcionada. |
COLLECTION_ID
Sintaxis:
collection_id(ref: REFERENCE) -> STRING
Descripción:
Devuelve el ID de la colección de hojas del REFERENCE determinado.
Ejemplos:
ref |
collection_id(ref) |
|---|---|
users/user1 |
"users" |
users/user1/posts/post1 |
"posts" |
DOCUMENT_ID
Sintaxis:
document_id(ref: REFERENCE) -> ANY
Descripción:
Devuelve el ID del documento del REFERENCE determinado.
Ejemplos:
ref |
document_id(ref) |
|---|---|
users/user1 |
"user1" |
users/user1/posts/post1 |
"post1" |
PARENT
Sintaxis:
parent(ref: REFERENCE) -> REFERENCE
Descripción:
Devuelve el REFERENCE principal de la referencia determinada o NULL si la referencia ya es una raíz.
Ejemplos:
ref |
parent(ref) |
|---|---|
/ |
NULL |
users/user1 |
/ |
users/user1/posts/post1 |
users/user1 |
REFERENCE_SLICE
Sintaxis:
reference_slice(ref: REFERENCE, offset: INT, length: INT) -> REFERENCE
Descripción:
Un REFERENCE es una lista de tuplas (collection_id, document_id), lo que permite obtener una vista de esa lista, al igual que array_slice(...).
Devuelve un nuevo REFERENCE que es un subconjunto de los segmentos del ref determinado.
offset: Es el índice inicial (basado en 0) de la división. Si es negativo, es una compensación desde el final de la referencia.length: Es la cantidad de segmentos que se incluirán en la segmentación.
Ejemplos:
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 |