इस पेज पर, Cloud Firestore और MongoDB के व्यवहार में अंतर के बारे में बताया गया है.
MongoDB के वर्शन के हिसाब से, काम करने वाली सुविधाओं के बारे में जानने के लिए, यहां जाएं:
- इस्तेमाल की जा सकने वाली सुविधाएं: 8.0
- इस्तेमाल की जा सकने वाली सुविधाएं: 7.0
- इस्तेमाल की जा सकने वाली सुविधाएं: 6.0
- इस्तेमाल की जा सकने वाली सुविधाएं: 5.0
कनेक्शन और डेटाबेस
- हर कनेक्शन को सिर्फ़ एक Cloud Firestore डेटाबेस से कनेक्ट किया जा सकता है.
- डेटाबेस से कनेक्ट करने से पहले, उसे बनाना ज़रूरी है.
नामकरण
आपके डेटा मॉडल के हिस्सों के नाम रखने के लिए, यहां दिए गए अंतर लागू होते हैं.
संग्रह
__.*__से मेल खाने वाले कलेक्शन के नाम इस्तेमाल नहीं किए जा सकते.
फ़ील्ड
__.*__से मिलते-जुलते फ़ील्ड के नाम इस्तेमाल नहीं किए जा सकते.- खाली फ़ील्ड के नाम इस्तेमाल नहीं किए जा सकते.
दस्तावेज़
- दस्तावेज़ का साइज़ 4 MiB से ज़्यादा नहीं होना चाहिए.
- फ़ील्ड को ज़्यादा से ज़्यादा 20 लेवल तक नेस्ट किया जा सकता है. ऐरे और ऑब्जेक्ट टाइप वाले हर फ़ील्ड से, कुल डेप्थ में एक लेवल जुड़ जाता है.
_id
- टॉप-लेवल का
_idफ़ील्ड, ObjectId, String, 64-बिट पूर्णांक, 32-बिट पूर्णांक, Double, Binary या Object होना चाहिए. अन्य 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चरणों का इस्तेमाल नहीं किया जा सकता. इस्तेमाल की जा सकने वाली स्टेज और ऑपरेटर की पूरी सूची देखने के लिए, कमांड सेक्शन देखें.$lookupस्टेज में,letऔरpipelineफ़ील्ड काम नहीं करते.$facetस्टेज में, इनपुट स्टेज में$randका इस्तेमाल नहीं किया जा सकता, क्योंकि यह एक अस्थिर एक्सप्रेशन है.
लिखता है
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की वैल्यू, कलेक्शन में यूनीक हों. - मल्टी-की की सुविधा के बिना बनाए गए इंडेक्स, राइट ऑपरेशन के आधार पर अपने-आप मल्टी-की इंडेक्स में नहीं बदलते. इंडेक्स बनाते समय, मल्टी-की को चालू करना ज़रूरी है. इस विकल्प को बदला नहीं जा सकता.
गड़बड़ियां
- Cloud Firestore और MongoDB के बीच गड़बड़ी के कोड और मैसेज अलग-अलग हो सकते हैं.
निर्देश
यहां दी गई जानकारी से पता चलता है कि कुछ खास कमांड के लिए, अलग-अलग डिवाइसों पर अलग-अलग तरीके से काम किया जाता है.
- यहां दी गई टेबल में शामिल नहीं किए गए निर्देशों का इस्तेमाल नहीं किया जा सकता.
maxTimeMSको ज़्यादातर कमांड में इस्तेमाल किया जा सकता है, लेकिन इसे अनदेखा भी किया जा सकता है.
क्वेरी और लिखता है
| Command | ऐसे फ़ील्ड जिनका इस्तेमाल नहीं किया जा सकता |
|---|---|
|
|
|
|
|
|
|
|
|
मिटाने के स्टेटमेंट में:
|
|
|
|
|
|
|
|
|
|
(कुछ नहीं) |
लेन-देन और सेशन
| Command | ऐसे फ़ील्ड जिनका इस्तेमाल नहीं किया जा सकता |
|---|---|
|
|
|
|
|
(कुछ नहीं) |
एडमिनिस्ट्रेशन
| Command | ऐसे फ़ील्ड जिनका इस्तेमाल नहीं किया जा सकता | ज़रूरी जानकारी |
|---|---|---|
|
|
अगर filter की वैल्यू दी गई है, तो यह खाली होनी चाहिए. |
|
|
अगर authorizedCollections की वैल्यू दी गई है, तो उसे 'गलत' के तौर पर सेट किया जाना चाहिए. |
|
|
|
|
|
यह कमांड कोई कार्रवाई नहीं करती. अगर capped दिया गया है, तो इसकी वैल्यू false होनी चाहिए. |
आगे क्या करना है
- क्विकस्टार्ट: डेटाबेस बनाना और उससे कनेक्ट करना को चलाएं.
- इस्तेमाल की जा सकने वाली सुविधाओं की पूरी सूची देखने के लिए, MongoDB के साथ काम करने वाले डेटा टाइप, ड्राइवर, और सुविधाएं लेख पढ़ें.