סוגי נתונים נתמכים

בדף הזה מתוארים סוגי הנתונים שנתמכים ב-Cloud Firestore.

סוגי נתונים

בטבלה הבאה מפורטים סוגי הנתונים שנתמכים ב-Cloud Firestore. בנוסף, מוסבר בה סדר המיון שמשמש להשוואה בין ערכים מאותו סוג:

סוג הנתונים סדר מיון הערות
מערך לפי ערכי רכיבים

מערך לא יכול להכיל ערך של מערך אחר כאחד מהרכיבים שלו.

בתוך מערך, הרכיבים שומרים על המיקום שהוקצה להם. כשממיינים שני מערכים או יותר, המערכים מסודרים לפי ערכי הרכיבים שלהם.

כשמשווים בין שתי מערכים, המערכת משווה בין הרכיבים הראשונים של כל מערך. אם הרכיבים הראשונים שווים, משווים את הרכיבים השני וכן הלאה עד שמוצאים הבדל. אם נגמרו הרכיבים להשוואה במערך מסוים, אבל הוא שווה למערך אחר עד לנקודה הזו, המערך הקצר יותר יופיע לפני המערך הארוך יותר.

לדוגמה, [1, 2, 3] < [1, 2, 3, 1] < [2]. למערך [2] יש את הערך הגדול ביותר של הרכיב הראשון. למערך [1, 2, 3] יש רכיבים ששווים לשלושת הרכיבים הראשונים של [1, 2, 3, 1], אבל הוא קצר יותר.

בוליאני false < true
בייטים סדר הבייטים עד 1,048,487 בייטים (1 מיביבייט פחות 89 בייטים). השאילתות מתייחסות רק ל-1,500 הבייטים הראשונים.
תאריך ושעה כרונולוגי כשמאחסנים את הנתונים ב-Cloud Firestore, הם מדויקים רק עד מיקרו-שניות. כל דיוק נוסף מעוגל כלפי מטה.
מספר נקודה צפה (floating-point) Numeric דיוק כפול של 64 ביט בהתאם לתקן IEEE 754, כולל (נורמליזציה) NaN ו-+/-Infinity.
נקודה גיאוגרפית לפי קו רוחב, ואחר כך לפי קו אורך בשלב הזה אנחנו לא ממליצים להשתמש בסוג הנתונים הזה בגלל מגבלות על שאילתות. בדרך כלל עדיף לאחסן את קווי הרוחב וקווי האורך כשדות מספריים נפרדים. אם האפליקציה שלכם צריכה שאילתות גיאוגרפיות פשוטות שמבוססות על מרחק, כדאי לעיין במאמר בנושא שאילתות גיאוגרפיות
מספר שלם Numeric ‫64 ביט, חתום
מפה לפי מפתחות, ואז לפי ערך

מייצג אובייקט שמוטמע במסמך. כשמוסיפים שדות לאינדקס, אפשר להריץ שאילתות על שדות משנה. אם לא כוללים את הערך הזה באינדקס, גם כל שדות המשנה לא נכללים באינדקס.

סדר המפתחות תמיד ממוין. לדוגמה, אם כותבים {c: "foo", a: "bar", b: "qux"} המפה ממוינת לפי מפתח ונשמרת כ-{a: "bar", b: "qux", c: "foo"}.

השדות של המיפוי ממוינים לפי מפתח ומושווים לפי צמדי מפתח/ערך. קודם מושווים המפתחות ואחר כך הערכים. אם צמדי המפתח/ערך הראשונים שווים, מתבצעת השוואה בין צמדי המפתח/ערך הבאים, וכן הלאה. אם לשתי מפות יש את כל זוגות המפתח-ערך, נלקח בחשבון אורך המפה. לדוגמה, המפות הבאות מסודרות בסדר עולה:

{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}

Null ללא
חומרי עזר לפי רכיבי נתיב (אוסף, מזהה מסמך, אוסף, מזהה מסמך...) לדוגמה, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
מחרוזת טקסט סדר הבייטים בקידוד UTF-8 עד 1,048,487 בייטים (1 מיביבייט פחות 89 בייטים). השאילתות מתייחסות רק ל-1,500 הבייטים הראשונים של ייצוג UTF-8.
Vector לפי מימד ואז לפי ערכי רכיבים בודדים המימד המקסימלי של הטמעת נתונים שנתמך הוא 2048. כדי לאחסן וקטורים עם מימדים גדולים יותר, אפשר להשתמש בהפחתת מימדים.

סדר של סוגי ערכים

כששאילתה כוללת שדה עם ערכים מסוגים מעורבים, Cloud Firestore משתמש בסדר דטרמיניסטי שמבוסס על הייצוגים הפנימיים. הרשימה הבאה מציגה את הסדר:

  1. ערכי Null
  2. ערכים בוליאניים
  3. ערכים של מספרים שלמים וערכים של נקודה צפה, ממוינים בסדר מספרי
  4. ערכי תאריכים
  5. ערכים של מחרוזות טקסט
  6. ערכי בייטים
  7. Cloud Firestore הפניות
  8. ערכי נקודות גיאוגרפיות
  9. ערכי מערך
  10. הטמעות וקטוריות
  11. מיפוי ערכים

סדר מספרי

Cloud Firestore ממיין את כל הערכים המספריים (Integer ו-Floating point) לסירוגין. ההשוואה של מספרים ממשיים מתבצעת לפי הסדר הכולל של IEEE 754, עם חריגה משמעותית אחת: הפונקציה Cloud Firestore מבצעת נרמול של כל הערכים של NaN, ומתייחסת אליו כאל ערך קטן מ--Infinity.