סוגי נתונים ודרייברים נתמכים של MongoDB
בטבלאות הבאות מפורטים סוגי הנתונים, הדרייברים והכלים של צד שלישי שנתמכים ב-MongoDB, ל-Firestore עם תאימות ל-MongoDB.
סוגי הנתונים
| סוג BSON | יש תמיכה |
|---|---|
| מספר שלם של 32 ביט | כן |
| מספר שלם של 64 ביט | כן |
| מערך | כן |
| נתונים בינאריים | כן |
| בוליאני | כן |
| תאריך | כן |
| DBPointer | לא |
| Decimal128 | כן |
| כפול | כן |
| JavaScript | לא |
| JavaScript (עם היקף) | לא |
| MaxKey | כן |
| MinKey | כן |
| Null | כן |
| אובייקט | כן |
| ObjectId | כן |
| ביטוי רגולרי | כן |
| String | כן |
| סמל | לא |
| חותמת הזמן | כן |
| לא מוגדר | לא |
מסמך _id
השדה _id ברמה העליונה במסמך חייב להיות אחד מהסוגים הבאים:
- ObjectId
- String
- מספר שלם של 64 ביט
- מספר שלם של 32 ביט
- כפול
- בינארי
- אובייקט
- בוליאני
הגודל הכולל של _id לא יכול להיות יותר מ-1,500 בייטים.
כל ערך בתוך מזהה מסוג אובייקט חייב להיות גם מסוג מזהה נתמך או מערך של ערכים, שכל אחד מהם הוא מסוג מזהה נתמך.
אין תמיכה בסוגי BSON אחרים.
שפות ודרייברים של MongoDB
Firestore עם תאימות ל-MongoDB תומך בגרסאות הדרייברים הבאות:
| שפה | גרסאות של מנהלי התקנים |
|---|---|
| Java | 5.x |
| Node.js | 6.x 5.x |
| Python | 4.x 3.x (x ≥ 12) |
| המשך | 2.x |
| C# | 3.x |
| Ruby | 2.x (x ≥ 16) |
תמיכה באימות OIDC
מנהלי ההתקנים של Go, C# ו-Ruby תומכים באימות של OpenID Connect (OIDC) מ-Google Cloud לכל גרסאות מנהלי ההתקנים הנתמכות.
מנהלי ההתקנים של Java, Node.js ו-Python תומכים באימות OIDC מ-Google Cloud החל מגרסאות מנהלי ההתקנים הבאות:
- Java: 4.10
- Node.js: 6.7
- Python: 4.7
כלי צד שלישי
Firestore עם תאימות ל-MongoDB תומך בכלים של צד שלישי שמתוארים בקטע הזה.
| כלי | תיאור | הערות |
|---|---|---|
| mongoimport | כלי מסד הנתונים של MongoDB | טעינת נתונים בכמות גדולה |
| mongoexport | כלי מסד הנתונים של MongoDB | |
| mongodump | כלי מסד הנתונים של MongoDB | |
| mongorestore | כלי מסד הנתונים של MongoDB | טעינת נתונים בכמות גדולה |
| mongosh | MongoDB Shell | |
| Mongoose | כלי ליצירת מודלים של אובייקטים ב-MongoDB | |
| MongoDB Compass | כלי GUI לניתוח נתונים |
תאימות בין סוגי BSON ו-Firestore
בקטע הזה מפורט המיפוי בין סוגי MongoDB BSON לבין ערכי Firestore. מכיוון ש-BSON הוא פורמט בינארי ו-Firestore API משתמש במאגרי אחסון לפרוטוקולים, סוגים מסוימים ממופים ישירות, ואילו סוגים אחרים דורשים ייצוגים מיוחדים של מפות.
סקירה כללית של המיפוי
בטבלאות הבאות מוצגות ההתאמות בין סוגי הנתונים של BSON לבין הייצוגים של מאגר האחסון לפרוטוקולים ב-Firestore.
מיפויים ישירים
לסוגים האלה יש מקבילה ישירה בשתי המערכות.
| סוג BSON | BSON | Firestore Proto | הערות |
|---|---|---|---|
| Double | 1.23 |
double_value: 1.23 |
|
| מחרוזת | "hello" |
string_value: "hello" |
|
| אובייקט | { |
map_value { |
|
| מערך | [ |
array_value { |
|
| בינארי (סוג משנה אפס) | BinData(0, 'SGVsbG8=') |
bytes_value: "Hello" |
|
| בוליאני | true |
boolean_value: true |
|
| Null | null |
null_value: NULL_VALUE |
|
| מספר שלם של 64 ביט | Long('1234567890') |
integer_value: 1234567890 |
|
| תאריך | ISODate('2026-05-22T04:00:00Z') |
timestamp_value { |
ערכי חותמות הזמן של Firestore מאוחסנים ברמת דיוק של מיקרו-שניות, אבל כל מה שמעבר לרמת דיוק של אלפיות השנייה אובד בהמרה ל-BSON. |
סוגי BSON שמיוצגים כמפות ב-Firestore API
סוגי ה-BSON האלה נכללים ב-map_value של Firestore עם מפתחות מיוחדים שמציינים את הסוג.
| סוג BSON | BSON | Firestore Proto | הערות |
|---|---|---|---|
| מספר שלם של 32 ביט | 123 |
map_value { |
|
| בינארי (סוג משנה שאינו אפס) | BinData(1, 'AQIDBA==') |
map_value { |
בייט של סוג משנה שנוסף לפני הנתונים. |
| ObjectId | ObjectId('67eea9446dc71ec469e9496a') |
map_value { |
מחרוזת הקסדצימלית באותיות קטנות. |
| חותמת זמן (פנימי) | Timestamp(123, 1) |
map_value { |
חותמת זמן פנימית של MongoDB. |
| ביטוי רגולרי | RegExp('.*', 'im') |
map_value { |
|
| Min Key | MinKey() |
map_value { |
|
| Max Key | MaxKey() |
map_value { |
|
| Decimal128 | Decimal128('4E7') |
map_value { |
סוגי Firestore שלא קיימים באופן מקורי ב-BSON
הסוגים האלה של Firestore מיוצגים כמפות עם מבנה מיוחד כשהם מומרים ל-BSON.
| סוג Firestore | BSON | Firestore Proto |
|---|---|---|
| GeoPoint | { |
geo_point_value { |
| וקטור | { |
map_value { |
| הפניה למסמך | { |
reference_value: "projects/.../documents/col/doc" |
שמות השדות
שמות שדות מ-MongoDB שתואמים ל-__.*__ עוברים בריחה (escape) על ידי שילוב של r: כשהם מאוחסנים ב-Firestore. לדוגמה, שדה BSON מסוג __foo__ הופך ל-__r:foo__ ב-Firestore.
סוגי נתונים של BSON בערכות SDK של לקוחות
כשמשתמשים בערכות SDK של לקוח Firestore, אפשר להשתמש במחלקות SDK מיוחדות כדי לייצג סוגי נתונים של BSON, כמו מספרים עשרוניים של 128 ביט, ביטויים רגולריים וחותמות זמן של BSON.
Node.js
const { RegexValue, Decimal128Value, BsonTimestamp } = require('@google-cloud/firestore'); // Setting fields with BSON data types const res = await db.collection('foo').doc('bar').set({ regex: new RegexValue('myRegexPattern', 'i'), decimal: new Decimal128Value('0.73e-7'), bsonTimestamp: new BsonTimestamp(1732754912, 500), });
Java
import com.google.cloud.firestore.BsonTimestamp; import com.google.cloud.firestore.Decimal128Value; import com.google.cloud.firestore.RegexValue; import java.util.HashMap; import java.util.Map; Map<String, Object> data = new HashMap<>(); data.put("regex", new RegexValue("myRegexPattern", "i")); data.put("decimal", new Decimal128Value("0.73e-7")); data.put("bson_timestamp", new BsonTimestamp(1732754912, 500)); db.collection("foo").doc("bar").set(data);
Java
Android
import com.google.firebase.firestore.BsonTimestamp; import com.google.firebase.firestore.Decimal128Value; import com.google.firebase.firestore.RegexValue; import java.util.HashMap; import java.util.Map; Map<String, Object> data = new HashMap<>(); data.put("regex", new RegexValue("myRegexPattern", "i")); data.put("decimal", new Decimal128Value("0.73e-7")); data.put("bson_timestamp", new BsonTimestamp(1732754912, 500)); db.collection("foo").doc("bar").set(data);
המשך
import ( "context" "cloud.google.com/go/firestore" ) func writeBsonTypes(ctx context.Context, client *firestore.Client) error { _, err := client.Collection("foo").Doc("bar").Set(ctx, map[string]interface{}{ "regex": firestore.RegexValue{Pattern: "myRegexPattern", Options: "i"}, "decimal": firestore.Decimal128Value{Value: "0.73e-7"}, "bson_timestamp": firestore.BsonTimestamp{Seconds: 1732754912, Increment: 500}, }) return err }
המאמרים הבאים
- מריצים את המדריך למתחילים: יצירת מסד נתונים והתחברות אליו.
- מידע על הבדלים בהתנהגות
- לפירוט של התכונות הנתמכות בהתאם לגרסת MongoDB, ראו