בדף הזה מתוארים ההבדלים בהתנהגות בין Cloud Firestore לבין MongoDB.
במאמרים הבאים מפורטות התכונות הנתמכות בהתאם לגרסת MongoDB:
חיבורים ומסדי נתונים
- כל חיבור מוגבל למסד נתונים אחד של Cloud Firestore.
- צריך ליצור מסד נתונים לפני שמתחברים אליו.
מתן שמות
ההבדלים הבאים חלים על מתן שמות לחלקים של מודל הנתונים.
אוספים
- אין תמיכה בשמות של אוספים שתואמים לביטוי
__.*__.
שדות
- אין תמיכה בשמות שדות שתואמים ל-
__.*__. - אין תמיכה בשמות שדות ריקים.
לכתוב מסמכים
- גודל המסמך המקסימלי הוא 16 MiB.
- עומק ההטמעה המקסימלי של שדות הוא 20. כל שדה מסוג Array ו-Object מוסיף רמה אחת לעומק הכולל.
- באירועים של Eventarc, מסמכים שגדולים מ-10MiB לא נכללים במטען הייעודי (payload) של האירוע.
השדה _id
- השדה
_idברמה העליונה חייב להיות ObjectId, מחרוזת, מספר שלם של 64 ביט, מספר שלם של 32 ביט, Double, בינארי או אובייקט. אין תמיכה בסוגי BSON אחרים.
ערכים
- אין תמיכה בסוגי ה-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. בקטע פקודות מופיעה רשימה מלאה של השלבים והאופרטורים הנתמכים. - השלב
$facetלא תומך ב-$randאו ב-$sampleבשלבי הקלט כי זה ביטוי לא יציב.
כתיבה
- אי אפשר ליצור מסמכים שהשמות שלהם מתחילים בסימן דולר ("$") באמצעות התכונה "לעדכן או להוסיף (upsert)" של
updateאוfindAndModify. - חשוב לוודא שמחרוזת החיבור כוללת את
retryWrites=false(או להשתמש בשיטה שמתאימה למנהל ההתקן) כדי לוודא שמנהל ההתקן לא מנסה להשתמש בתכונה הזו. אין תמיכה בכתיבה חוזרת.
עסקאות
יש תמיכה בבידוד snapshot ובעסקאות שמאפשרות סריאליזציה.
כברירת מחדל, בעסקאות נעשה שימוש בבקרת בו-זמניות אופטימית עם בידוד snapshot.
קריאה של נתוני החששות
Cloud Firestore תומך ב-read concerns
snapshot,majorityו-linearizable. ברירת המחדל היאsnapshot, שמתייחסת לבידוד snapshot.משתמשים ב-
linearizableכשהאפליקציה דורשת עקביות קפדנית וצריך למנוע אנומליות של הטיית כתיבה. בעומסי עבודה אחרים,snapshotיכול לשפר את הביצועים ולהפחית את התחרות על טרנזקציות.
כתיבת חשש
- יש תמיכה רק ב-write concerns מסוג
w: 'majority'ו-w: 1.
העדפת קריאה
- רק רמות החשש לקריאה
primary,primaryPreferred,primary_preferred,secondary_preferredו-nearestנתמכות.
אינדקסים
- אין תמיכה באינדקסים של תווים כלליים לחיפוש.
- Cloud Firestore לא יוצר באופן אוטומטי אינדקס ב-
_id, אבל הוא מבטיח שהערכים של_idיהיו ייחודיים בתוך אוסף. כדי להשיג התנהגות מיון דומה, צריך ליצור במפורש אינדקס מסודר בשדה_id. עם זאת, חשוב לשים לב לבעיות פוטנציאליות של נקודות חמות, במיוחד אם הערכים של_idעולים או יורדים באופן מונוטוני (למשל, חותמות זמן), כי זה יכול להשפיע על הביצועים בקנה מידה גדול. - אינדקסים שלא מופעל בהם ריבוי מפתחות לא משתנים אוטומטית לאינדקסים עם ריבוי מפתחות על סמך פעולות כתיבה. צריך להפעיל את האפשרות multi-key כשיוצרים את האינדקס, ואי אפשר לשנות אותה.
שגיאות
- יכול להיות שיהיו הבדלים בין קודי השגיאה וההודעות ב-Cloud Firestore לבין אלה שב-MongoDB.
פקודות
ההבדלים הבאים בהתנהגות חלים על פקודות ספציפיות.
- פקודות שלא מופיעות בטבלאות הבאות לא נתמכות.
- רוב הפקודות מקבלות את
comment, אבל מתעלמות ממנו. - רוב הפקודות מקבלות את
maxTimeMS, אבל יכול להיות שהן יתעלמו ממנו.
שאילתות
וכתיבה
| Command | שדות שלא נתמכים |
|---|---|
|
|
|
|
|
|
|
|
(ללא) |
|
|
בהצהרת עדכון:
|
|
|
בתוך הצהרת מחיקה:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(ללא) |
|
|
(ללא) |
עסקאות
וסשנים
| Command | שדות שלא נתמכים |
|---|---|
|
|
(ללא) |
|
|
(ללא) |
|
|
(ללא) |
ניהול
| Command | שדות שלא נתמכים | Notes |
|---|---|---|
|
|
|
אם השדה filter מסופק, הוא חייב להיות ריק. |
|
|
(ללא) |
אם מציינים את authorizedCollections, הערך שלו חייב להיות false. |
|
|
(ללא) |
|
|
|
(ללא) |
|
|
|
(ללא) |
|
|
|
|
הפקודה הזו לא מבצעת שום פעולה. אם מציינים את capped, הערך שלו חייב להיות false.
|
|
|
(ללא) |
מגבלות על איסוף פריטים
כשמוחקים אוסף, חלות המגבלות הבאות:
- יצירה מחדש של אינדקס: אי אפשר ליצור את אותה הגדרת אינדקס מיד אחרי שמוחקים אותה. צריך להמתין עד שהמחיקה ברקע תסתיים.
- מגבלת גודל: מחיקת אוספים גדולים עלולה לגרום לזמן קצוב לתפוגה של החיבור. אם אתם רואים הודעות על זמן קצוב לתפוגה, הגדילו את המועד האחרון לחיבור. אפשר להשתמש במחיקה בכמות גדולה כחלופה.
- אירועים: אירועי Drop collection לא נוצרים ב-Eventarc כשמשתמשים בפקודה
drop.
המאמרים הבאים
- מריצים את המדריך למתחילים: יצירת מסד נתונים והתחברות אליו.
- כאן מופיעה רשימה מלאה של סוגי הנתונים, הדרייברים והתכונות של MongoDB שנתמכים.