Funções de referência
O tipo REFERENCE funciona como um "ponteiro" para outros documentos no banco de dados (ou até mesmo em outros bancos de dados). As funções a seguir permitem manipular esse tipo
durante a execução da consulta.
| Nome | Descrição |
COLLECTION_ID
|
Retorna o ID da coleção de folhas na referência especificada. |
DOCUMENT_ID
|
Retorna o ID do documento na referência especificada. |
PARENT
|
Retorna a referência principal. |
REFERENCE_SLICE
|
Retorna um subconjunto de segmentos da referência especificada. |
COLLECTION_ID
Sintaxe:
collection_id(ref: REFERENCE) -> STRING
Descrição:
Retorna o ID da coleção de folhas do REFERENCE especificado.
Exemplos:
ref |
collection_id(ref) |
|---|---|
users/user1 |
"users" |
users/user1/posts/post1 |
"posts" |
DOCUMENT_ID
Sintaxe:
document_id(ref: REFERENCE) -> ANY
Descrição:
Retorna o ID do documento do REFERENCE especificado.
Exemplos:
ref |
document_id(ref) |
|---|---|
users/user1 |
"user1" |
users/user1/posts/post1 |
"post1" |
PARENT
Sintaxe:
parent(ref: REFERENCE) -> REFERENCE
Descrição:
Retorna o REFERENCE principal da referência especificada ou NULL se a referência já for uma referência raiz.
Exemplos:
ref |
parent(ref) |
|---|---|
/ |
NULL |
users/user1 |
/ |
users/user1/posts/post1 |
users/user1 |
REFERENCE_SLICE
Sintaxe:
reference_slice(ref: REFERENCE, offset: INT, length: INT) -> REFERENCE
Descrição:
Um REFERENCE é uma lista de tuplas (collection_id, document_id), o que permite
ter uma visualização dessa lista, assim como array_slice(...).
Retorna um novo REFERENCE que é um subconjunto dos segmentos do ref especificado.
offset: o índice inicial (base zero) da fração. Se for negativo, será um deslocamento do final da referência.length: o número de segmentos a serem incluídos na fração.
Exemplos:
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 |