mongoimport
का उपयोग करते समय MongoDB में फ़ाइलें आयात करने के लिए, आपके पास उपयोग करने के लिए एक मोड निर्दिष्ट करने का विकल्प है। ये मोड निर्धारित करते हैं कि क्या होता है यदि संग्रह में पहले से मेल खाने वाले दस्तावेज़ हैं जिन्हें आप आयात करने का प्रयास कर रहे हैं।
डिफ़ॉल्ट रूप से, mongoimport
insert
का उपयोग करता है मोड, लेकिन ऐसे अन्य तरीके हैं जिनका आप उपयोग कर सकते हैं। आपके द्वारा उपयोग किया जाने वाला मोड इस बात पर निर्भर करेगा कि आप क्या करने का प्रयास कर रहे हैं।
नीचे उदाहरणों के साथ प्रत्येक मोड का अवलोकन दिया गया है।
मोड
आयात मोड mongoimport
. में उपलब्ध हैं इस प्रकार हैं:
मोड | <थ>विवरण|
---|---|
insert | यह डिफ़ॉल्ट मोड है। यह मोड आयात फ़ाइल से दस्तावेज़ सम्मिलित करता है। यदि संग्रह में मेल खाने वाला दस्तावेज़ पहले से मौजूद है, तो एक त्रुटि उत्पन्न होती है। एक मेल खाने वाला दस्तावेज़ वह होता है जिसमें एक ही अद्वितीय आईडी होती है (जैसे मेल खाने वाला _id फ़ील्ड) आयात फ़ाइल में एक दस्तावेज़ के रूप में। |
upsert | डेटाबेस में मौजूदा दस्तावेज़ों को आयात फ़ाइल से मेल खाने वाले दस्तावेज़ों से बदल देता है। अन्य सभी दस्तावेज़ सम्मिलित किए गए हैं। |
merge | मौजूदा दस्तावेज़ों को मर्ज करता है जो नए दस्तावेज़ के साथ आयात फ़ाइल में दस्तावेज़ से मेल खाते हैं। अन्य सभी दस्तावेज़ सम्मिलित किए गए हैं। |
delete | डेटाबेस में मौजूदा दस्तावेज़ों को हटाता है जो आयात फ़ाइल में किसी दस्तावेज़ से मेल खाते हैं। मेल न खाने वाले किसी भी दस्तावेज़ का कोई प्रभाव नहीं पड़ता है। |
प्रत्येक मोड कैसे काम करता है, इसके उदाहरण नीचे दिए गए हैं।
इन्सर्ट मोड
मान लीजिए हमारे पास pets
. नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
जैसा कि यह पता चला है, उन्हें pets.json
. नामक फ़ाइल में आयात किया गया था ।
अब कल्पना करें कि हमारे पास एक और JSON फ़ाइल है जिसे pets2.json
. कहा जाता है , जिसमें निम्नलिखित JSON दस्तावेज़ शामिल हैं:
{ "_id" : 1, "weight": 40 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight": 10 } { "_id" : 3, "name" : "Scratch", "type" : "Cat", "weight": 5 } { "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight": 3 }
यदि हम इसे अपने pets
. में आयात करने का प्रयास करते हैं तो यहां क्या होता है संग्रह का उपयोग करते समय (डिफ़ॉल्ट) insert
मोड।
mongoimport --db=PetHotel --collection=pets --file=pets2.json
आउटपुट:
2021-01-03T10:07:23.421+1000 connected to: mongodb://localhost/ 2021-01-03T10:07:23.422+1000 continuing through error: E11000 duplicate key error collection: PetHotel.pets index: _id_ dup key: { _id: 1 } 2021-01-03T10:07:23.422+1000 continuing through error: E11000 duplicate key error collection: PetHotel.pets index: _id_ dup key: { _id: 2 } 2021-01-03T10:07:23.422+1000 continuing through error: E11000 duplicate key error collection: PetHotel.pets index: _id_ dup key: { _id: 3 } 2021-01-03T10:07:23.423+1000 1 document(s) imported successfully. 3 document(s) failed to import.
उस त्रुटि संदेश के अनुसार, चार दस्तावेज़ों में से केवल एक ही आयात किया गया था। अन्य तीनों के कारण _id
. में डुप्लीकेट कुंजी होने के कारण त्रुटि हुई फ़ील्ड.
अब आइए इस संग्रह को देखें।
db.pets.find()
परिणाम:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
तो हम देख सकते हैं कि अंतिम दस्तावेज़ डाला गया था। यह अपेक्षित है, क्योंकि पहले हमारे पास _id
. वाला कोई दस्तावेज़ नहीं था 4
. का मान ।
अप्सर्ट मोड
अगर हम upsert
. का उपयोग करते हैं तो यहां बताया गया है उसी दस्तावेज़ को सम्मिलित करने के लिए मोड।
mongoimport --db=PetHotel --collection=pets --mode=upsert --file=pets2.json
आउटपुट:
2021-01-03T10:19:55.400+1000 connected to: mongodb://localhost/ 2021-01-03T10:19:55.444+1000 3 document(s) imported successfully. 0 document(s) failed to import.
आउटपुट हमें बताता है कि 4 में से 3 दस्तावेज़ सफलतापूर्वक आयात किए गए थे, और यह कि कोई विफलता नहीं थी।
आइए संग्रह की जाँच करें।
db.pets.find()
परिणाम:
{ "_id" : 1, "weight" : 40 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Scratch", "type" : "Cat", "weight" : 5 } { "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
हम देख सकते हैं कि पहले तीन दस्तावेज़ों को आयात फ़ाइल के दस्तावेज़ों से बदल दिया गया है। चौथा दस्तावेज़ वही रहता है जो पिछले आयात के बाद था।
ध्यान दें कि पहले दस्तावेज़ ने अपना name
खो दिया है और type
खेत। ऐसा इसलिए है क्योंकि upsert
मोड पूरे दस्तावेज़ को बदल देता है, और हमारे प्रतिस्थापन दस्तावेज़ में केवल weight
. होता है फ़ील्ड (साथ ही _id
खेत)।
मर्ज मोड
आइए हमारे pets2.json
. को संशोधित करें फ़ाइल ताकि यह इस तरह दिखे:
{ "_id" : 1, "name": "Wag", "type": "Dog" } { "_id" : 2, "name" : "Fetch" } { "_id" : 3, "name" : "Scratch" } { "_id" : 4, "name" : "Bubbles" } { "_id" : 5, "name" : "Hop", "type": "Kangaroo" }
अब mongoimport
चलाते हैं फिर से कमांड करें, लेकिन इस बार merge
. में मोड:
mongoimport --db=PetHotel --collection=pets --mode=merge --file=pets2.json
आउटपुट:
2021-01-03T10:32:33.596+1000 connected to: mongodb://localhost/ 2021-01-03T10:32:33.607+1000 3 document(s) imported successfully. 0 document(s) failed to import.
आउटपुट के अनुसार, 3 दस्तावेज़ आयात किए गए थे।
आइए संग्रह पर एक नज़र डालें।
db.pets.find()
परिणाम:
{ "_id" : 1, "weight" : 40, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Scratch", "type" : "Cat", "weight" : 5 } { "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 } { "_id" : 5, "name" : "Hop", "type" : "Kangaroo" }
हम देख सकते हैं कि दस्तावेज़ 1 और 2 अपडेट किए गए थे, और दस्तावेज़ 5 डाला गया था। दस्तावेज़ 1 के संबंध में, weight
आयात दस्तावेज़ में वह फ़ील्ड शामिल नहीं होने के बावजूद फ़ील्ड बना रहा। ऐसा इसलिए है क्योंकि हमने merge
. का उपयोग किया है तरीका। अगर हम upsert
. का इस्तेमाल करते मोड (पिछले उदाहरण की तरह), weight
फ़ील्ड गायब हो जाती।
डिलीट मोड
जब आप delete
. का उपयोग करते हैं मोड, कोई भी मेल खाने वाले दस्तावेज़ आसानी से हटा दिए जाते हैं। मेल न खाने वाले दस्तावेज़ संग्रह में रहते हैं।
तो देखते हैं कि क्या होता है जब हम एक ही दस्तावेज़ को आयात करते हैं, लेकिन इस बार delete
पर स्विच करें मोड।
mongoimport --db=PetHotel --collection=pets --mode=delete --file=pets2.json
परिणाम:
2021-01-03T10:39:38.925+1000 connected to: mongodb://localhost/ 2021-01-03T10:39:38.926+1000 5 document(s) deleted successfully. 0 document(s) failed to delete.
संग्रह के सभी 5 दस्तावेज़ हटा दिए गए थे।
अप्सर्ट फ़ील्ड बदलना
आप --upsertFields
. का उपयोग कर सकते हैं _id
. के अलावा कोई अन्य फ़ील्ड निर्दिष्ट करने के लिए पैरामीटर के खिलाफ मैच करने के लिए। इस पैरामीटर का उपयोग करते समय, फ़ील्ड को अल्पविराम से अलग की गई सूची के रूप में पास करें।
सुनिश्चित नहीं है कि आपके पास mongoimport
है ?
mongoimport
MongoDB डेटाबेस टूल्स पैकेज का हिस्सा है। MongoDB डेटाबेस टूल्स MongoDB के साथ काम करने के लिए कमांड-लाइन उपयोगिताओं का एक सूट है।
यदि आप सुनिश्चित नहीं हैं कि आपके पास MongoDB डेटाबेस टूल्स/mongoimport
है या नहीं स्थापित है, जाँच करने के लिए अपने टर्मिनल या कमांड प्रॉम्प्ट में निम्न कमांड चलाने का प्रयास करें:
mongoimport --version
यदि आपके पास यह है, तो आपको संस्करण की जानकारी आदि देखनी चाहिए। यदि आपके पास यह नहीं है, तो आप इसे अपने सिस्टम पर स्थापित करने के लिए MongoDB वेबसाइट पर इंस्टॉलेशन निर्देशों का उपयोग कर सकते हैं।
कहां चलाएं mongoimport
आदेश?
आपको mongoimport
चलाने की जरूरत है आपके सिस्टम की कमांड लाइन से कमांड (जैसे एक नया टर्मिनल या कमांड प्रॉम्प्ट विंडो)।
उन्हें mongo
. से न चलाएं सीप।