این صفحه تفاوتهای رفتاری بین 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توسط اکثر فرمانها پذیرفته میشود اما ممکن است نادیده گرفته شود.
پُرسمانها
و مینویسد
| فرمان | فیلدهای پشتیبانینشده |
|---|---|
|
|
|
|
|
|
|
|
(خالی) |
|
|
در بیانیه بهروزرسانی:
|
|
|
در بیانیه حذف:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(خالی) |
|
|
(خالی) |
تراکنشها
و جلسهها
| فرمان | فیلدهای پشتیبانینشده |
|---|---|
|
|
(خالی) |
|
|
(خالی) |
|
|
(خالی) |
مدیریت
| فرمان | فیلدهای پشتیبانینشده | یادداشتها |
|---|---|---|
|
|
|
filter درصورت ارائه باید خالی باشد. |
|
|
(خالی) |
authorizedCollections درصورت ارائه باید نادرست باشد. |
|
|
(خالی) |
|
|
|
(خالی) |
|
|
|
(خالی) |
|
|
|
|
این فرمان بدون عملیات است.capped درصورت ارائه باید نادرست باشد.
|
|
|
(خالی) |
محدودیتهای مجموعه Drop
هنگام حذف مجموعه، محدودیتهای زیر اعمال میشود:
- بازسازی نمایه: نمیتوانید همان پیکربندی نمایه را بلافاصله پساز حذف ایجاد کنید. باید منتظر بمانید تا حذف پسزمینه تمام شود.
- محدودیت اندازه: رها کردن مجموعههای بزرگ ممکن است منجر به اتمام مهلت اتصال شود. اگر با اتمام مهلت مواجه میشوید، مهلت اتصال را افزایش دهید. میتوانید از حذف انبوه بهعنوان جایگزین استفاده کنید.
- رویدادها: رویدادهای مجموعه Drop برای Eventarc هنگام استفاده از فرمان
dropتولید نمیشوند.
حالا چه میشود
- شروع سریع: ایجاد پایگاه داده و اتصال به آن را اجرا کنید.
- برای فهرست کامل ویژگیهای پشتیبانیشده، به ویژگیها، درایورها، و انواع داده MongoDB پشتیبانیشده مراجعه کنید.