الاختلافات في السلوك

ينطبق ذلك على إصدار Cloud Firestore Enterprise فقط.

توضّح هذه الصفحة الاختلافات السلوكية بين Cloud Firestore المتوافق مع MongoDB وMongoDB.

للاطّلاع على تفاصيل الميزات المتوافقة حسب إصدار MongoDB، يُرجى الرجوع إلى:

عمليات الربط وقواعد البيانات

  • يقتصر كل اتصال على قاعدة بيانات واحدة متوافقة مع MongoDB في Cloud Firestore.
  • يجب إنشاء قاعدة بيانات قبل الاتصال بها.

التسمية

تنطبق الاختلافات التالية على تسمية أجزاء من نموذج البيانات.

المجموعات

  • لا تتوفّر أسماء المجموعات التي تتطابق مع __.*__.

الحقول

  • لا يمكن استخدام أسماء الحقول التي تتطابق مع __.*__.
  • لا يمكن ترك أسماء الحقول فارغة.

المستندات

  • الحد الأقصى لحجم المستند هو 4 ميغابايت.
  • يبلغ الحد الأقصى لمستوى الدمج للحقول 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 على تحديد foreignField في _id.

يكتب

  • لا يمكن إنشاء مستندات تبدأ أسماؤها بعلامة الدولار ($) باستخدام ميزة الإدراج/التعديل في update أو findAndModify.
  • تأكَّد من أنّ سلسلة الاتصال تتضمّن retryWrites=false (أو استخدِم الطريقة المناسبة لبرنامج التشغيل) للتأكّد من أنّ برنامج التشغيل لا يحاول استخدام هذه الميزة. لا تتوفّر عمليات الكتابة القابلة لإعادة المحاولة.

المعاملات

  • يتوافق مع الفصل بين اللقطات والمعاملات القابلة للتسلسل.

  • تستخدم المعاملات تلقائيًا عناصر التحكّم المتزامنة المتفائلة مع عزل اللقطات.

قراءة بيانات المشاكل

  • يتوافق Cloud Firestore مع MongoDB مع مستويات snapshot وmajority وlinearizable من إعدادات قراءة البيانات. القيمة التلقائية هي snapshot، وتشير إلى عزل اللقطات.

    استخدِم linearizable عندما يتطلّب التطبيق اتساقًا صارمًا ويجب أن يمنع حدوث أي تشوّهات في الكتابة. بالنسبة إلى أحمال العمل الأخرى، يمكن أن يؤدي استخدام snapshot إلى تحسين الأداء والحدّ من تعارض المعاملات.

كتابة مشكلة

  • يُسمح فقط باستخدام خيارَي w: 'majority' وw: 1.

إعدادات القراءة المفضّلة

  • يتم توفير خيارات القراءة primary وprimaryPreferred وprimary_preferred وsecondary_preferred وnearest فقط.

الفهارس

  • لا يمكن استخدام فهارس أحرف البدل.
  • لا تنشئ خدمة Cloud Firestore المتوافقة مع MongoDB تلقائيًا فهرسًا في _id، ولكنها تضمن أن تكون قيم _id فريدة ضمن مجموعة.
  • لا يتم تلقائيًا تغيير الفهارس التي لم يتم تفعيل ميزة المفاتيح المتعددة فيها إلى فهارس مفاتيح متعددة استنادًا إلى عمليات الكتابة. يجب تفعيل المفتاح المتعدد عند إنشاء الفهرس، ولا يمكن تغيير هذا الخيار.

الأخطاء

  • قد تختلف رموز الخطأ ورسائله بين Cloud Firestore المتوافق مع MongoDB وMongoDB.

الأوامر

تنطبق الاختلافات التالية في السلوك على أوامر معيّنة.

  • إنّ الأوامر غير المُدرَجة في الجداول التالية غير متوافقة.
  • تقبل معظم الأوامر القيمة maxTimeMS ولكن قد يتم تجاهلها.

الاستعلامات وعمليات الكتابة

Command الحقول غير المتوافقة

find

  • comment
  • readConcern
  • max
  • min
  • returnKey
  • showRecordId
  • tailable
  • oplogReplay
  • noCursorTimeout
  • awaitData
  • allowPartialResults
  • collation
  • allowDiskUsage
  • let

aggregate

  • bypassDocumentValidation
  • readConcern
  • collation
  • hint
  • comment
  • let

insert

  • bypassDocumentValidation
  • comment

update

  • collation
  • arrayFilters
  • hint

delete

  • comment
  • write

ضمن عبارة حذف:

  • collation
  • hint

findAndModify

  • fields
  • bypassDocumentValidation
  • collation
  • arrayFilters
  • hint
  • comment
  • let

count

  • hint
  • readConcern
  • collation
  • comment

distinct

  • readConcern
  • collation
  • comment
  • hint

getMore

  • comment

killCursors

(القائمة فارغة)

المعاملات والجلسات

Command الحقول غير المتوافقة

commitTransaction

  • comment

abortTransaction

  • comment

endSessions

(القائمة فارغة)

الإدارة

Command الحقول غير المتوافقة Notes

listDatabases

  • authorizedDatabases
  • comment
يجب أن يكون filter فارغًا إذا تم توفيره.

listCollections

  • comment
يجب أن تكون قيمة authorizedCollections هي false إذا تم توفيرها.

listIndexes

  • comment

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • writeConcern
  • encryptedFields
  • comment
هذا الأمر لا يؤدي إلى أي عملية.

يجب أن تكون قيمة capped خطأ إذا تم توفيرها.

الخطوات التالية