इस पेज पर, Cloud Firestore और MongoDB के बीच के अंतर के बारे में बताया गया है.
MongoDB के वर्शन के हिसाब से, काम करने वाली सुविधाओं की जानकारी के लिए, यहां जाएं:
- इस्तेमाल की जा सकने वाली सुविधाएं: 8.0
- इस्तेमाल की जा सकने वाली सुविधाएं: 7.0
- इस्तेमाल की जा सकने वाली सुविधाएं: 6.0
- इस्तेमाल की जा सकने वाली सुविधाएं: 5.0
कनेक्शन और डेटाबेस
- हर कनेक्शन, सिर्फ़ एक Cloud Firestore डेटाबेस से जुड़ा होता है.
- डेटाबेस से कनेक्ट करने से पहले, उसे बनाना ज़रूरी है.
नाम रखना
आपके डेटा मॉडल के हिस्सों के नाम रखने के लिए, ये अंतर लागू होते हैं.
संग्रह
__.*__से मेल खाने वाले कलेक्शन के नाम इस्तेमाल नहीं किए जा सकते.
फ़ील्ड
__.*__से मैच करने वाले फ़ील्ड के नाम इस्तेमाल नहीं किए जा सकते.- फ़ील्ड के नाम खाली नहीं छोड़े जा सकते.
दस्तावेज़
- दस्तावेज़ का साइज़ ज़्यादा से ज़्यादा 16 MiB हो सकता है.
- फ़ील्ड की नेस्टिंग डेप्थ ज़्यादा से ज़्यादा 20 हो सकती है. हर अरे और ऑब्जेक्ट-टाइप फ़ील्ड, कुल गहराई में एक लेवल जोड़ता है.
- Eventarc इवेंट में, 10 MiB से बड़े दस्तावेज़ों को इवेंट पेलोड में शामिल नहीं किया जाता.
_id फ़ील्ड
- टॉप-लेवल
_idफ़ील्ड, ObjectId, स्ट्रिंग, 64-बिट इंटिजर, 32-बिट इंटिजर, डबल, बाइनरी या ऑब्जेक्ट होना चाहिए. अन्य BSON टाइप का इस्तेमाल नहीं किया जा सकता.
वैल्यू
- JavaScript, Symbol, DBPointer, और Undefined BSON टाइप का इस्तेमाल नहीं किया जा सकता.
तारीख
- तारीख की वैल्यू
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]के बीच होनी चाहिए.
Decimal128
NaN, पॉज़िटिव इनफ़िनिटी, और नेगेटिव इनफ़िनिटी वैल्यू को लिखते समय कैननिकल किया जाता है.- Decimal128 पर अंकगणितीय कार्रवाइयां नहीं की जा सकतीं.
डबल-साइज़ बेड
NaNवैल्यू को लिखते समय कैननिकल किया जाता है.
रेगुलर एक्सप्रेशन
- रेगुलर एक्सप्रेशन के विकल्प मान्य ("i", "m", "s", "u" या "x") होने चाहिए. साथ ही, इन्हें वर्णमाला के क्रम में दिया जाना चाहिए और दोहराया नहीं जाना चाहिए.
क्वेरी
- नैचुरल सॉर्ट ऑर्डर (ऐसी क्वेरी जिनमें साफ़ तौर पर सॉर्ट नहीं किया गया है), इंसर्शन ऑर्डर या
_idके हिसाब से बढ़ते क्रम से मैच नहीं करता.
एग्रीगेशन
- एग्रीगेशन में ज़्यादा से ज़्यादा 250 स्टेज हो सकते हैं.
$mergeऔर$outस्टेज का इस्तेमाल नहीं किया जा सकता. इस्तेमाल किए जा सकने वाले स्टेज और ऑपरेटर की पूरी सूची के लिए, कमांड सेक्शन देखें.$facetस्टेज में, इनपुट स्टेज में$randया$sampleका इस्तेमाल नहीं किया जा सकता, क्योंकि यह एक वोलेटाइल एक्सप्रेशन है.
लिखना
- जिन दस्तावेज़ों के नाम डॉलर के चिह्न ("$") से शुरू होते हैं उन्हें
updateयाfindAndModifyकी upsert सुविधा का इस्तेमाल करके नहीं बनाया जा सकता. - पक्का करें कि आपकी कनेक्शन स्ट्रिंग में
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को ज़्यादातर निर्देशों के साथ इस्तेमाल किया जा सकता है. हालांकि, इसे अनदेखा किया जा सकता है.
क्वेरी
और लिखता है
| Command | इस्तेमाल न किए जा सकने वाले फ़ील्ड |
|---|---|
|
|
|
|
|
|
|
|
(कुछ नहीं) |
|
|
अपडेट स्टेटमेंट में:
|
|
|
मिटाने के स्टेटमेंट में:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(कुछ नहीं) |
|
|
(कुछ नहीं) |
लेन-देन
और सेशन
| Command | इस्तेमाल न किए जा सकने वाले फ़ील्ड |
|---|---|
|
|
(कुछ नहीं) |
|
|
(कुछ नहीं) |
|
|
(कुछ नहीं) |
एडमिनिस्ट्रेशन
| Command | इस्तेमाल न किए जा सकने वाले फ़ील्ड | ज़रूरी जानकारी |
|---|---|---|
|
|
|
अगर filter दिया गया है, तो यह खाली होना चाहिए. |
|
|
(कुछ नहीं) |
अगर authorizedCollections की वैल्यू दी गई है, तो वह false होनी चाहिए. |
|
|
(कुछ नहीं) |
|
|
|
(कुछ नहीं) |
|
|
|
(कुछ नहीं) |
|
|
|
|
यह कमांड, नो-ऑप है. अगर capped दिया गया है, तो इसे 'गलत है' पर सेट करना ज़रूरी है.
|
|
|
(कुछ नहीं) |
ड्रॉप कलेक्शन से जुड़ी पाबंदियां
किसी कलेक्शन को हटाने पर, ये सीमाएं लागू होती हैं:
- इंडेक्स को फिर से बनाना: किसी इंडेक्स को हटाने के तुरंत बाद, उसी इंडेक्स कॉन्फ़िगरेशन को नहीं बनाया जा सकता. आपको बैकग्राउंड में डेटा मिटाने की प्रोसेस पूरी होने तक इंतज़ार करना होगा.
- साइज़ की सीमा: बड़े कलेक्शन हटाने से, कनेक्शन टाइम आउट हो सकता है. अगर आपको टाइम आउट की गड़बड़ी दिखती है, तो कनेक्शन की समयसीमा बढ़ाएं. इसके बजाय, एक साथ कई आइटम मिटाने की सुविधा का इस्तेमाल किया जा सकता है.
- इवेंट:
dropकमांड का इस्तेमाल करने पर, Eventarc के लिए ड्रॉप कलेक्शन इवेंट जनरेट नहीं होते.
आगे क्या करना है
- क्विकस्टार्ट: डेटाबेस बनाएं और उससे कनेक्ट करें को चलाएं.
- इस्तेमाल की जा सकने वाली सुविधाओं की पूरी सूची देखने के लिए, इस्तेमाल किए जा सकने वाले MongoDB डेटा टाइप, ड्राइवर, और सुविधाएं लेख पढ़ें.