Funciones de referencia

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