توابع مرجع

عملکردهای مرجع

نوع REFERENCE به‌عنوان «اشاره‌گر» به اسناد دیگر در پایگاه داده (یا حتی پایگاه‌های داده دیگر) عمل می‌کند. توابع زیر امکان دستکاری این نوع را درطول اجرای پُرسمان فراهم می‌کنند.

نام شرح
COLLECTION_ID شناسه مجموعه برگ را در مرجع داده‌شده برمی‌گرداند
DOCUMENT_ID شناسه سند را در مرجع داده‌شده برمی‌گرداند
PARENT مرجع والد را برمی‌گرداند
REFERENCE_SLICE زیرمجموعه‌ای از بخش‌ها را از مرجع داده‌شده برمی‌گرداند

COLLECTION_ID

نحو:

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

نحو:

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

شرح:

‫REFERENCE فهرستی از چندتایی‌های (collection_id, document_id) است و این امکان را فراهم می‌کند که نمایی از آن فهرست دریافت کنید، درست مثل array_slice(...).

REFERENCE جدیدی را برمی‌گرداند که زیرمجموعه‌ای از بخش‌های ref داده‌شده است.

  • ‫offset: نمایه شروع (مبتنی بر ۰) برش. اگر منفی باشد، یک افست از انتهای مرجع است.
  • ‫length: تعداد بخش‌هایی که باید در برش گنجانده شود.

نمونه:

ref offset length reference_slice(ref, offset, length)
a/1/b/2/c/3 یک لیتر 2L b/2/c/3
a/1/b/2/c/3 ‫۰ لیتر 2L a/1/b/2
a/1/b/2/c/3 ‫-۲ لیتر 2L c/3