Funções de referência

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