Опорные функции
Тип REFERENCE выступает в роли «указателя» на другие документы в базе данных (или даже на другие базы данных). Следующие функции позволяют управлять этим типом во время выполнения запроса.
| Имя | Описание |
COLLECTION_ID | Возвращает идентификатор коллекции конечных элементов в указанной ссылке. |
DOCUMENT_ID | Возвращает идентификатор документа в указанной ссылке. |
PARENT | Возвращает ссылку на родительский объект. |
REFERENCE_SLICE | Возвращает подмножество сегментов из заданной ссылки. |
ИДЕНТИФИКАТОР КОЛЛЕКЦИИ
Синтаксис:
collection_id(ref: REFERENCE) -> STRING
Описание:
Возвращает идентификатор коллекции листьев для заданной REFERENCE .
Примеры:
ref | collection_id(ref) |
|---|---|
users/user1 | "users" |
users/user1/posts/post1 | "posts" |
DOCUMENT_ID
Синтаксис:
document_id(ref: REFERENCE) -> ANY
Описание:
Возвращает идентификатор документа по указанной REFERENCE .
Примеры:
ref | document_id(ref) |
|---|---|
users/user1 | "user1" |
users/user1/posts/post1 | "post1" |
РОДИТЕЛЬ
Синтаксис:
parent(ref: REFERENCE) -> REFERENCE
Описание:
Возвращает родительскую REFERENCE для заданной ссылки или NULL , если ссылка уже является корневой.
Примеры:
ref | parent(ref) |
|---|---|
/ | NULL |
users/user1 | / |
users/user1/posts/post1 | users/user1 |
РЕФЕРЕНЦОВЫЙ СЛОТ
Синтаксис:
reference_slice(ref: REFERENCE, offset: INT, length: INT) -> REFERENCE
Описание:
Объект REFERENCE представляет собой список кортежей (collection_id, document_id) , и он позволяет получить представление этого списка, подобно array_slice(...) .
Возвращает новый REFERENCE , являющийся подмножеством сегментов заданного объекта ref .
-
offset: Начальный индекс (от 0) среза. Если значение отрицательное, это смещение от конца опорной точки. -
length: количество сегментов, которые следует включить в фрагмент.
Примеры:
ref | offset | length | reference_slice(ref, offset, length) |
|---|---|---|---|
a/1/b/2/c/3 | 1 л | 2 л | b/2/c/3 |
a/1/b/2/c/3 | 0 л | 2 л | a/1/b/2 |
a/1/b/2/c/3 | -2 л | 2 л | c/3 |