| רלוונטי רק למהדורת Cloud Firestore Enterprise. |
בדף הזה מוסבר על ההבדלים בהתנהגות בין Cloud Firestore עם תאימות ל-MongoDB לבין MongoDB.
לפירוט של התכונות הנתמכות בהתאם לגרסת MongoDB, אפשר לעיין במאמרים הבאים:
חיבורים ומסדי נתונים
- כל חיבור מוגבל למסד נתונים יחיד עם תאימות ל-MongoDB ב-Cloud Firestore.
- צריך ליצור מסד נתונים לפני שמתחברים אליו.
מתן שמות
ההבדלים הבאים חלים על מתן שמות לחלקים של מודל הנתונים.
אוספים
- אין תמיכה בשמות של אוספים שתואמים ל-
__.*__.
שדות
- אין תמיכה בשמות שדות שתואמים ל-
__.*__. - אין תמיכה בשמות שדות ריקים.
לכתוב מסמכים
- גודל המסמך המקסימלי הוא 4MiB.
- העומק המקסימלי של קינון שדות הוא 20. כל שדה מסוג Array ו-Object מוסיף רמה אחת לעומק הכולל.
_id
- המסמך
_id(שדה ברמה העליונה) חייב להיות ObjectId, מחרוזת או מספר שלם של 64 ביט. אין תמיכה בסוגים אחרים של BSON. - אין תמיכה במחרוזת ריקה ("") וב-0 של 64 ביט (0L).
ערכים
- אין תמיכה בסוגי ה-BSON JavaScript, Symbol, DBPointer ו-Undefined.
תאריך
- ערכי התאריכים צריכים להיות בטווח
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z].
Decimal128
- הערכים
NaN, אינסוף חיובי ואינסוף שלילי עוברים קנוניזציה בזמן הכתיבה. - אין תמיכה בפעולות אריתמטיות ב-Decimal128.
זוגית
- הערכים של
NaNעוברים קנוניזציה בזמן הכתיבה.
ביטוי רגולרי
- האפשרויות של הביטוי הרגולרי צריכות להיות תקינות (i, m, s, u או x) ולסופק בסדר אלפביתי ללא חזרות.
שאילתות
- סדר המיון הטבעי (שאילתות ללא מיון מפורש) לא תואם לסדר ההוספה או למיון לפי
_idבסדר עולה.
צבירות
- הצבירות מוגבלות ל-250 שלבים.
- אין תמיכה בשלבים
$mergeו-$out. רשימה מלאה של השלבים והאופרטורים הנתמכים מופיעה בקטע בנושא פקודות. - בשלב
$lookupאין תמיכה בשדותletו-pipeline.
כותב
- אי אפשר ליצור מסמכים עם שמות שמתחילים בסימן דולר ("$") באמצעות התכונה upsert של
updateאוfindAndModify. - מוודאים שמחרוזת החיבור
כוללת את
retryWrites=false(או משתמשים בשיטה שמתאימה לדרייבר) כדי לוודא שהדרייבר לא ינסה להשתמש בתכונה הזו. אין תמיכה בכתיבות שאפשר לנסות שוב.
עסקאות
יש תמיכה בבידוד של תמונות מצב ובטרנזקציות שניתנות לסריאליזציה.
כברירת מחדל, טרנזקציות משתמשות בבקרת מקביליות אופטימית עם בידוד תמונת מצב.
דיווח על בעיה
Cloud Firestore עם תאימות ל-MongoDB תומך בבעיות הקריאה
snapshot,majorityו-linearizable. ברירת המחדל היאsnapshot, שמתייחסת לבידוד snapshot.משתמשים ב-
linearizableכשהאפליקציה דורשת עקביות קפדנית וצריכה למנוע אנומליות של הטיה בכתיבה. עבור עומסי עבודה אחרים,snapshotיכול לשפר את הביצועים ולהפחית את התחרות על משאבים בעסקאות.
כתיבה של נתוני הדאגה
- יש תמיכה רק ב-write concerns
w: 'majority'ו-w: 1.
העדפת קריאה
- רק רמות הדאגה לגבי קריאה
primary,primaryPreferred,primary_preferred,secondary_preferredו-nearestנתמכות.
מדדים
- אין תמיכה באינדקסים עם תו כללי לחיפוש.
- Cloud Firestore עם תאימות ל-MongoDB לא יוצר באופן אוטומטי אינדקס ב-
_id, אבל הוא מוודא שהערכים של_idהם ייחודיים בתוך אוסף. - אינדקסים ללא הפעלה של multi-key לא משתנים אוטומטית לאינדקסים של multi-key על סמך פעולות כתיבה. צריך להפעיל את האפשרות 'כמה מקשים' כשיוצרים את האינדקס, ואי אפשר לשנות את האפשרות הזו.
שגיאות
- קודי השגיאה וההודעות עשויים להיות שונים בין Cloud Firestore עם תאימות ל-MongoDB לבין MongoDB.
פקודות
ההבדלים הבאים בהתנהגות חלים על פקודות ספציפיות.
- פקודות שלא מופיעות בטבלאות הבאות לא נתמכות.
- רוב הפקודות מקבלות את
maxTimeMS, אבל יכול להיות שהן יתעלמו ממנו.
שאילתות וכתיבה
| Command | שדות שלא נתמכים |
|---|---|
|
|
|
|
|
|
|
|
|
בתוך הצהרת מחיקה:
|
|
|
|
|
|
|
|
|
|
(ללא) |
עסקאות וסשנים
| Command | שדות שלא נתמכים |
|---|---|
|
|
|
|
|
(ללא) |
ניהול
| Command | שדות שלא נתמכים | Notes |
|---|---|---|
|
|
אם מציינים את הערך filter, הוא חייב להיות ריק. |
|
|
אם מציינים את הערך authorizedCollections, הוא חייב להיות false. |
|
|
|
|
|
הפקודה הזו לא מבצעת פעולה.capped צריך להיות false אם הוא מסופק. |
המאמרים הבאים
- מריצים את המאמר מדריך למתחילים: יצירת מסד נתונים והתחברות אליו.
- רשימה מלאה של התכונות הנתמכות מופיעה במאמר סוגי נתונים, דרייברים ותכונות נתמכים של MongoDB.