تسرد الجداول التالية أنواع بيانات MongoDB وبرامج التشغيل وأدوات الجهات الخارجية المتوافقة مع Cloud Firestore.
أنواع البيانات
| نوع BSON | متوافقة |
|---|---|
| عدد صحيح 32 بت | نعم |
| عدد صحيح 64 بت | نعم |
| مصفوفة | نعم |
| البيانات الثنائية | نعم |
| قيمة منطقية | نعم |
| التاريخ | نعم |
| DBPointer | لا |
| Decimal128 | نعم |
| مزدوج | نعم |
| JavaScript | لا |
| JavaScript (مع النطاق) | لا |
| MaxKey | نعم |
| MinKey | نعم |
| خالية | نعم |
| عنصر | نعم |
| ObjectId | نعم |
| تعبير عادي | نعم |
| سلسلة | نعم |
| الرمز | لا |
| الطابع الزمني | نعم |
| غير محدد | لا |
المستند _id
يجب أن يكون حقل _id ذو المستوى الأعلى في المستند من أحد الأنواع التالية:
- ObjectId
- سلسلة
- عدد صحيح 64 بت
- عدد صحيح 32 بت
- مزدوج
- برنامج ثنائي
- عنصر
- قيمة منطقية
يجب ألا يتجاوز إجمالي حجم _id 1500 بايت.
يجب أن تكون كل قيمة ضمن معرّف من نوع "كائن" من نوع معرّف متوافق أو مصفوفة من القيم، كل منها من نوع معرّف متوافق.
لا تتوافق أنواع BSON الأخرى.
اللغات وبرامج تشغيل MongoDB
يتوافق Cloud Firestore مع إصدارات برامج التشغيل التالية:
| اللغة | إصدارات برامج التشغيل |
|---|---|
| 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
أدوات الجهات الخارجية
يتيح Cloud Firestore استخدام الأدوات التابعة لجهات خارجية الموضّحة في هذا القسم.
| الأداة | الوصف | Notes |
|---|---|---|
| mongoimport | أدوات قاعدة بيانات MongoDB | يُرجى الاطّلاع على تحميل البيانات المجمّعة |
| mongoexport | أدوات قاعدة بيانات MongoDB | |
| mongodump | أدوات قاعدة بيانات MongoDB | |
| mongorestore | أدوات قاعدة بيانات MongoDB | يُرجى الاطّلاع على تحميل البيانات المجمّعة |
| mongosh | MongoDB Shell | |
| Mongoose | أداة إعداد نماذج العناصر في MongoDB | |
| MongoDB Compass | أداة واجهة مستخدم رسومية لاستكشاف البيانات |
توافق BSON ونوع Cloud Firestore
يلخّص هذا القسم عملية الربط بين أنواع MongoDB BSON وقيم Cloud Firestore. بما أنّ BSON هو تنسيق ثنائي وواجهة برمجة تطبيقات Cloud Firestore تستخدم Protocol Buffers، يتم ربط بعض الأنواع مباشرةً، بينما يتطلّب البعض الآخر تمثيلات ربط خاصة.
نظرة عامة على عملية الربط
توضّح الجداول التالية كيفية مطابقة أنواع بيانات BSON مع تمثيلات Protocol Buffers Cloud Firestore.
عمليات الربط المباشر
هذه الأنواع لها مكافئ مباشر في كلا النظامين.
| نوع BSON | BSON | Cloud Firestore Proto | ملاحظات |
|---|---|---|---|
| Double | 1.23 |
double_value: 1.23 |
|
| String | "hello" |
string_value: "hello" |
|
| Object | { |
map_value { |
|
| Array | [ |
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 { |
يتم تخزين قيم الطابع الزمني Cloud Firestore بدقة ميكرو ثانية، ولكن يتم فقدان أي شيء يتجاوز دقة المللي ثانية عند التحويل إلى BSON. |
أنواع BSON الممثَّلة كخرائط في واجهة برمجة تطبيقات Cloud Firestore
يتم تضمين أنواع BSON هذه في Cloud Firestore map_value مع
مفاتيح خاصة للإشارة إلى النوع.
| نوع BSON | BSON | Cloud Firestore Proto | ملاحظات |
|---|---|---|---|
| عدد صحيح 32 بت | 123 |
map_value { |
|
| ثنائي (نوع فرعي غير صفري) | BinData(1, 'AQIDBA==') |
map_value { |
تمت إضافة بايت النوع الفرعي إلى البيانات. |
| ObjectId | ObjectId('67eea9446dc71ec469e9496a') |
map_value { |
سلسلة سداسية عشرية بأحرف صغيرة |
| Timestamp (Internal) | 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 { |
Cloud Firestore نوعًا غير متوفّر في BSON
يتم تمثيل أنواع Cloud Firestore هذه كخرائط منظَّمة بشكل خاص عند تحويلها إلى BSON.
| نوع Cloud Firestore | BSON | Cloud Firestore Proto |
|---|---|---|
| GeoPoint | { |
geo_point_value { |
| Vector | { |
map_value { |
| مرجع المستند | { |
reference_value: "projects/.../documents/col/doc" |
أسماء الحقول
يتم إلغاء أسماء الحقول من MongoDB التي تتطابق مع __.*__ من خلال دمج
r: عند تخزينها في Cloud Firestore. على سبيل المثال، يصبح حقل BSON __foo__ هو __r:foo__ في Cloud Firestore.
أنواع بيانات BSON في حِزم تطوير البرامج (SDK) للعملاء
عند استخدام حزم تطوير البرامج (SDK) لعملاء Cloud 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
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، يُرجى مراجعة