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

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

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

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

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

نام‌گذاری

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

مجموعه‌ها

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

فیلدها

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

اسناد

  • حداکثر اندازه سند ۱۶ مبی‌بایت است.
  • حداکثر عمق تودرتو فیلدها ۲۰ است. هر فیلد از نوع «آرایه» و «شیء» یک سطح به عمق کلی اضافه می‌کند.
  • در رویدادهای Eventarc، اسناد بزرگ‌تر از ۱۰ مبی‌بایت در بار داده رویداد گنجانده نمی‌شوند.

_id فیلد

  • فیلد سطح بالای _id باید ObjectId،‏ String،‏ 64-bit integer،‏ 32-bit integer،‏ Double،‏ Binary، یا Object باشد. انواع دیگر BSON پشتیبانی نمی‌شوند.

مقادیر

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

تاریخ

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

Decimal128

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

دونفره

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

عبارت باقاعده

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

پُرسمان‌ها

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

انبوهش‌ها

  • انبوهش‌ها به ۲۵۰ مرحله محدود است.
  • مراحل $merge و $out پشتیبانی نمی‌شود. برای مشاهده فهرست کامل مراحل و عملگرهای پشتیبانی‌شده، بخش فرمان‌ها را ببینید.
  • مرحله $facet از $rand یا $sample در مراحل ورودی پشتیبانی نمی‌کند چون عبارت فراری است.

نوشتن

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

تراکنش‌ها

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

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

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

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

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

نوشتن نگرانی

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

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

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

نمایه‌ها

  • از نمایه‌های نویسه جانشین پشتیبانی نمی‌شود.
  • ‫Cloud Firestore به‌طور خودکار نمایه‌ای در _id ایجاد نمی‌کند، اما تضمین می‌کند که مقادیر _id در مجموعه منحصربه‌فرد باشند. برای دستیابی به رفتار مرتب‌سازی مشابه، باید به‌طور صریح یک نمایه مرتب‌شده در فیلد _id ایجاد کنید. بااین‌حال، مراقب مشکلات احتمالی نقطه داغ باشید، به‌ویژه اگر مقادیر _id شما به‌طور یکنواخت درحال افزایش یا کاهش باشد (مثلاً مُهرهای زمان)، زیرا این امر می‌تواند بر عملکرد در مقیاس تأثیر بگذارد.
  • نمایه‌هایی که چندکلیدی برای آن‌ها فعال نشده است، براساس عملیات نوشتن به‌طور خودکار به نمایه‌های چندکلیدی تغییر نمی‌کنند. هنگام ایجاد نمایه باید چندکلیدی را فعال کنید و این گزینه قابل‌تغییر نیست.

خطاها

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

فرمان‌ها

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

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

پُرسمان‌ها

و می‌نویسد

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

find

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

aggregate

  • collation
  • let

insert

(خالی)

update

در بیانیه به‌روزرسانی:

  • collation

delete

در بیانیه حذف:

  • collation

findAndModify

  • collation
  • let

count

  • collation

distinct

  • collation

getMore

  • comment

killCursors

(خالی)

explain

(خالی)

تراکنش‌ها

و جلسه‌ها

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

commitTransaction

(خالی)

abortTransaction

(خالی)

endSessions

(خالی)

مدیریت

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

listDatabases

  • authorizedDatabases
filter درصورت ارائه باید خالی باشد.

listCollections

(خالی)

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

listIndexes

(خالی)

createIndexes

(خالی)

dropIndexes

(خالی)

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • encryptedFields
این فرمان بدون عملیات است.

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

drop

(خالی)

محدودیت‌های مجموعه Drop

هنگام حذف مجموعه، محدودیت‌های زیر اعمال می‌شود:

  • بازسازی نمایه: نمی‌توانید همان پیکربندی نمایه را بلافاصله پس‌از حذف ایجاد کنید. باید منتظر بمانید تا حذف پس‌زمینه تمام شود.
  • محدودیت اندازه: رها کردن مجموعه‌های بزرگ ممکن است منجر به اتمام مهلت اتصال شود. اگر با اتمام مهلت مواجه می‌شوید، مهلت اتصال را افزایش دهید. می‌توانید از حذف انبوه به‌عنوان جایگزین استفاده کنید.
  • رویدادها: رویدادهای مجموعه Drop برای Eventarc هنگام استفاده از فرمان drop تولید نمی‌شوند.

حالا چه می‌شود