Reference Functions Reference

Reference Functions

The REFERENCE type acts as a "pointer" to other documents in the database (or even other databases). The following functions allow manipulating this type during query execution.

Name Description
COLLECTION_ID Returns the ID of the leaf collection in the given reference
DOCUMENT_ID Returns the ID of the document in the given reference
PARENT Returns the parent reference
REFERENCE_SLICE Returns a subset of segments from the given reference

COLLECTION_ID

Syntax:

 collection_id(ref: REFERENCE) -> STRING 

Description:

Returns the leaf collection ID of the given REFERENCE .

Examples:

ref collection_id(ref)
users/user1 "users"
users/user1/posts/post1 "posts"

DOCUMENT_ID

Syntax:

 document_id(ref: REFERENCE) -> ANY 

Description:

Returns the document ID of the given REFERENCE .

Examples:

ref document_id(ref)
users/user1 "user1"
users/user1/posts/post1 "post1"

PARENT

Syntax:

 parent(ref: REFERENCE) -> REFERENCE 

Description:

Returns the parent REFERENCE of the given reference, or NULL if the ref is a root reference already.

Examples:

ref parent(ref)
/ NULL
users/user1 /
users/user1/posts/post1 users/user1

REFERENCE_SLICE

Syntax:

 reference_slice(ref: REFERENCE, offset: INT, length: INT) -> REFERENCE 

Description:

A REFERENCE is a list of (collection_id, document_id) tuples and this allows getting a view of that list, just like array_slice(...) .

Returns a new REFERENCE that is a subset of the segments of the given ref .

  • offset : The starting index (0-based) of the slice. If negative, it is an offset from the end of the reference.
  • length : The number of segments to include in the slice.

Examples:

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

What's next

Create a Mobile Website
View Site in Mobile | Classic
Share by: