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

فقط مربوط به Cloud Firestore Enterprise edition.

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

برای تفکیک ویژگی های پشتیبانی شده بسته به نسخه MongoDB، نگاه کنید به:

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

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

نامگذاری

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

مجموعه ها

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

فیلدها

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

اسناد

  • حداکثر اندازه سند 4 مگابایت است.
  • حداکثر عمق تودرتو فیلدها 20 است. هر آرایه و فیلد با شیء تایپ یک سطح به عمق کلی اضافه می کند.

_id

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

ارزش ها

  • انواع JavaScript، Symbol، DBPointer و Undefined BSON پشتیبانی نمی شوند.

تاریخ

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

اعشاری128

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

دوبل

  • مقادیر NaN در نوشتن متعارف می شوند.

بیان منظم

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

پرس و جوها

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

تجمعات

  • تجمعات به 250 مرحله محدود می شوند.
  • مراحل $merge و $out پشتیبانی نمی شوند. برای مشاهده لیست کامل مراحل و عملگرهای پشتیبانی شده به بخش دستورات مراجعه کنید.
  • مرحله $lookup محدود به تعیین یک foreignField در _id است.

می نویسد

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

معاملات

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

  • به طور پیش‌فرض، تراکنش‌ها از کنترل‌های همزمان خوش‌بینانه با جداسازی عکس فوری استفاده می‌کنند.

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

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

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

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

  • فقط w: 'majority' و w: 1 نگرانی های نوشتن پشتیبانی می شوند.

اولویت را بخوانید

  • فقط نگرانی های primary ، primaryPreferred ، primary_preferred ، secondary_preferred ، و nearest موارد خوانده شده پشتیبانی می شوند.

شاخص ها

  • نمایه های 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 در صورت ارائه باید نادرست باشند.

listIndexes

  • comment

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • writeConcern
  • encryptedFields
  • comment
این دستور یک no-op است.

در صورت ارائه capped باید نادرست باشد.

بعدش چی