توضّح هذه الصفحة الاختلافات السلوكية بين Cloud Firestore وMongoDB.
للحصول على تفاصيل حول الميزات المتوافقة حسب إصدار MongoDB، يُرجى الاطّلاع على ما يلي:
- الميزات المتوافقة: الإصدار 8.0
- الميزات المتوافقة: الإصدار 7.0
- الميزات المتوافقة: الإصدار 6.0
- الميزات المتوافقة: الإصدار 5.0
عمليات الربط وقواعد البيانات
- يقتصر كل اتصال على قاعدة بيانات Cloud Firestore واحدة.
- يجب إنشاء قاعدة بيانات قبل الاتصال بها.
التسمية
تنطبق الاختلافات التالية على تسمية أجزاء من نموذج البيانات.
المجموعات
- لا تتوفّر أسماء المجموعات التي تتطابق مع
__.*__.
الحقول
- لا يمكن استخدام أسماء الحقول التي تتطابق مع
__.*__. - لا يمكن استخدام أسماء حقول فارغة.
المستندات
- الحد الأقصى لحجم المستند هو 16 MiB.
- الحدّ الأقصى لعمق التداخل في الحقول هو 20. يضيف كل حقل من النوع Array وObject مستوى واحدًا إلى العمق الإجمالي.
- في أحداث Eventarc، لا يتم تضمين المستندات التي يزيد حجمها عن 10 ميغابايت في حمولة الحدث.
الحقل _id
- يجب أن يكون الحقل
_idذو المستوى الأعلى ObjectId أو String أو عددًا صحيحًا 64 بت أو عددًا صحيحًا 32 بت أو Double أو Binary أو Object. لا تتوافق مع أنواع 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في مراحل الإدخال لأنّها عبارة متغيرة.
يكتب
- لا يمكن إنشاء مستندات تبدأ أسماؤها بعلامة الدولار ($) باستخدام ميزة الإدراج أو التعديل في
updateأوfindAndModify. - تأكَّد من أنّ سلسلة الاتصال تتضمّن
retryWrites=false(أو استخدِم الطريقة المناسبة لبرنامج التشغيل) للتأكّد من أنّ برنامج التشغيل لا يحاول استخدام هذه الميزة. لا يمكن استخدام عمليات الكتابة القابلة لإعادة المحاولة.
المعاملات
يتوفّر عزل اللقطات والمعاملات القابلة للتسلسل.
تستخدم المعاملات تلقائيًا عناصر تحكّم التزامن المتفائل مع عزل اللقطات.
قراءة بيانات المشاكل
يتوافق Cloud Firestore مع مستويات الاهتمام بالقراءة
snapshotوmajorityوlinearizable. القيمة التلقائية هيsnapshotالتي تشير إلى عزل اللقطات.استخدِم
linearizableعندما يتطلّب التطبيق اتساقًا صارمًا ويجب أن يمنع حدوث أي أخطاء في الكتابة. بالنسبة إلى أحمال العمل الأخرى، يمكن أن يؤدي استخدامsnapshotإلى تحسين الأداء والحدّ من تعارض المعاملات.
Write concern
- يُسمح باستخدام خيارَي
w: 'majority'وw: 1فقط.
إعدادات القراءة المفضّلة
- يتم توفير المخاوف المتعلقة بالقراءة فقط في
primaryوprimaryPreferredوprimary_preferredوsecondary_preferredوnearest.
الفهارس
- فهارس أحرف البدل غير متاحة.
- لا تنشئ Cloud Firestore فهرسًا تلقائيًا في
_id، ولكنّها تضمن أن تكون قيم_idفريدة ضمن مجموعة. لتحقيق سلوك ترتيب مشابه، عليك إنشاء فهرس مرتّب بشكل صريح في الحقل_id. ومع ذلك، يجب الانتباه إلى المشاكل المحتملة في النقاط الساخنة، خاصةً إذا كانت قيم_idتتزايد أو تتناقص بشكل رتيب (مثل الطوابع الزمنية)، لأنّ ذلك قد يؤثر في الأداء على نطاق واسع. - لا يتم تلقائيًا تغيير الفهارس التي لم يتم تفعيل ميزة المفاتيح المتعددة فيها إلى فهارس مفاتيح متعددة استنادًا إلى عمليات الكتابة. يجب تفعيل المفتاح المتعدد عند إنشاء الفهرس، ولا يمكن تغيير هذا الخيار.
الأخطاء
- قد تختلف رموز الخطأ ورسائله بين Cloud Firestore وMongoDB.
الأوامر
تنطبق الاختلافات التالية في السلوك على أوامر معيّنة.
- إنّ الأوامر غير المُدرَجة في الجداول التالية غير متوافقة.
- يتم قبول
commentفي معظم الأوامر ولكن يتم تجاهله. - يتم قبول
maxTimeMSفي معظم الأوامر ولكن قد يتم تجاهله.
طلبات البحث
ويكتب
| Command | الحقول غير المتوافقة |
|---|---|
|
|
|
|
|
|
|
|
(القائمة فارغة) |
|
|
ضمن عبارة تعديل:
|
|
|
ضمن عبارة حذف:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(القائمة فارغة) |
|
|
(القائمة فارغة) |
المعاملات
والجلسات
| Command | الحقول غير المتوافقة |
|---|---|
|
|
(القائمة فارغة) |
|
|
(القائمة فارغة) |
|
|
(القائمة فارغة) |
الإدارة
| Command | الحقول غير المتوافقة | Notes |
|---|---|---|
|
|
|
يجب أن يكون filter فارغًا إذا تم توفيره. |
|
|
(القائمة فارغة) |
يجب أن تكون قيمة authorizedCollections هي false إذا تم توفيرها. |
|
|
(القائمة فارغة) |
|
|
|
(القائمة فارغة) |
|
|
|
(القائمة فارغة) |
|
|
|
|
هذا الأمر لا يؤدي إلى أي عملية. يجب أن تكون قيمة capped خطأ إذا تم توفيرها.
|
|
|
(القائمة فارغة) |
قيود جمع البيانات
تنطبق القيود التالية عند حذف مجموعة:
- إعادة إنشاء الفهرس: لا يمكنك إنشاء إعدادات الفهرس نفسها مباشرةً بعد حدوث انخفاض. عليك الانتظار إلى أن تنتهي عملية حذف الخلفية.
- حدّ الحجم: قد يؤدي حذف المجموعات الكبيرة إلى انتهاء مهلة الاتصال. يمكنك زيادة الموعد النهائي للاتصال إذا ظهرت لك مهلات. يمكنك استخدام ميزة الحذف المجمّع كبديل.
- الأحداث: لا يتم إنشاء أحداث جمع البيانات التي تم إسقاطها في Eventarc عند استخدام الأمر
drop.
الخطوات التالية
- نفِّذ البداية السريعة: إنشاء قاعدة بيانات والاتصال بها.
- للحصول على قائمة كاملة بالميزات المتوافقة، راجِع أنواع البيانات وبرامج التشغيل والميزات المتوافقة مع MongoDB.