تفاوت های رفتاری

فقط مربوط به نسخه Cloud Firestore Enterprise است.

این صفحه تفاوت‌های رفتاری بین Cloud Firestore با سازگاری MongoDB و MongoDB را شرح می‌دهد.

برای مشاهده‌ی جزئیات ویژگی‌های پشتیبانی‌شده بسته به نسخه‌ی MongoDB، به لینک زیر مراجعه کنید:

اتصالات و پایگاه‌های داده

  • هر اتصال به یک Cloud Firestore واحد با پایگاه داده سازگار با MongoDB محدود می‌شود.
  • قبل از اتصال به پایگاه داده، باید آن را ایجاد کرد.

نامگذاری

تفاوت‌های زیر در نامگذاری بخش‌های مدل داده شما اعمال می‌شود.

مجموعه‌ها

  • نام‌های مجموعه منطبق با __.*__ پشتیبانی نمی‌شوند.

فیلدها

  • نام فیلدهایی که با __.*__ مطابقت دارند، پشتیبانی نمی‌شوند.
  • نام فیلدهای خالی پشتیبانی نمی‌شوند.

اسناد

  • حداکثر حجم سند ۴ مگابایت است.
  • حداکثر عمق تودرتوی فیلدها ۲۰ است. هر فیلد آرایه‌ای و فیلد شیء-نوع، یک سطح به عمق کلی اضافه می‌کند.

_id

  • _id سند (فیلد سطح بالا) باید یک شناسه شیء (ObjectId)، رشته (String) یا عدد صحیح ۶۴ بیتی باشد. سایر انواع BSON پشتیبانی نمی‌شوند.
  • رشته خالی ("") و 64 بیتی 0 (0L) پشتیبانی نمی‌شوند.

ارزش‌ها

  • انواع جاوا اسکریپت، نماد، DBPointer و BSON تعریف نشده پشتیبانی نمی‌شوند.

تاریخ

  • مقادیر تاریخ باید در [0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z] قرار گیرند.

دهدهی128

  • مقادیر NaN ، مثبت بی‌نهایت و منفی بی‌نهایت هنگام نوشتن، استانداردسازی می‌شوند.
  • عملیات حسابی روی Decimal128 پشتیبانی نمی‌شوند.

دو برابر

  • مقادیر NaN هنگام نوشتن، استانداردسازی می‌شوند.

عبارت منظم

  • گزینه‌های عبارت منظم باید معتبر باشند ("i"، "m"، "s"، "u" یا "x") و به ترتیب حروف الفبا و بدون تکرار ارائه شوند.

پرس‌وجوها

  • ترتیب مرتب‌سازی طبیعی (پرس‌وجوهای بدون مرتب‌سازی صریح) با ترتیب درج یا مرتب‌سازی بر اساس _id صعودی مطابقت ندارد.

تجمیع‌ها

  • تجمعات به ۲۵۰ مرحله محدود می‌شوند.
  • مراحل $merge و $out پشتیبانی نمی‌شوند. برای مشاهده لیست کامل مراحل و عملگرهای پشتیبانی شده، به بخش دستورات مراجعه کنید.
  • مرحله $lookup از فیلدهای let و pipeline پشتیبانی نمی‌کند.

می‌نویسد

  • اسنادی که نام آنها با علامت دلار ("$") شروع می‌شود را نمی‌توان با استفاده از ویژگی upsert در update یا findAndModify ایجاد کرد.
  • مطمئن شوید که رشته اتصال شما شامل retryWrites=false باشد (یا از روشی مناسب برای درایور خود استفاده کنید) تا مطمئن شوید که درایور سعی در استفاده از این ویژگی ندارد. نوشتن‌های قابل امتحان مجدد پشتیبانی نمی‌شوند.

تراکنش‌ها

  • جداسازی اسنپ‌شات و تراکنش‌های قابل سریال‌سازی پشتیبانی می‌شوند.

  • به طور پیش‌فرض، تراکنش‌ها از کنترل‌های همزمانی خوش‌بینانه با جداسازی لحظه‌ای (snapshot isolation) استفاده می‌کنند.

نگرانی را بخوانید

  • Cloud Firestore با سازگاری با MongoDB از دغدغه‌های snapshot ، majority و linearizable read پشتیبانی می‌کند. پیش‌فرض snapshot است که به جداسازی snapshot اشاره دارد.

    زمانی که برنامه به سازگاری دقیق نیاز دارد و باید از ناهنجاری‌های انحراف در نوشتن جلوگیری کند، linearizable استفاده کنید. برای سایر حجم‌های کاری، snapshot می‌تواند عملکرد را بهبود بخشد و تداخل تراکنش‌ها را کاهش دهد.

نگرانی را بنویسید

  • فقط w: 'majority' و w: 1 write concern پشتیبانی می‌شوند.

ترجیحات را بخوانید

  • فقط دغدغه‌های primary ، primaryPreferred ، primary_preferred ، secondary_preferred و nearest read پشتیبانی می‌شوند.

شاخص‌ها

  • شاخص‌های Wildcard پشتیبانی نمی‌شوند.
  • Cloud Firestore با سازگاری با MongoDB به طور خودکار ایندکسی روی _id ایجاد نمی‌کند، اما تضمین می‌کند که مقادیر _id در یک مجموعه منحصر به فرد باشند.
  • ایندکس‌هایی که قابلیت چندکلید فعال ندارند، بر اساس عملیات نوشتن، به طور خودکار به ایندکس‌های چندکلید تغییر نمی‌کنند. شما باید هنگام ایجاد ایندکس، قابلیت چندکلید را فعال کنید و این گزینه قابل تغییر نیست.

خطاها

  • کدهای خطا و پیام‌ها ممکن است بین Cloud Firestore با سازگاری MongoDB و MongoDB متفاوت باشند.

دستورات

تفاوت‌های رفتاری زیر در مورد دستورات خاص اعمال می‌شود.

  • دستوراتی که در جداول زیر ذکر نشده‌اند، پشتیبانی نمی‌شوند.
  • maxTimeMS توسط اکثر دستورات پذیرفته می‌شود اما می‌توان آن را نادیده گرفت.

پرس‌وجوها و نوشته‌ها

فرمان فیلدهای پشتیبانی نشده

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

(هیچکدام)

تراکنش‌ها و جلسات

فرمان فیلدهای پشتیبانی نشده

commitTransaction

  • comment

abortTransaction

  • comment

endSessions

(هیچکدام)

اداره

فرمان فیلدهای پشتیبانی نشده یادداشت‌ها

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 باید false باشد.

قدم بعدی چیست؟