MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

mongoimport के आयात मोड

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 . से न चलाएं सीप।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. जावा - मोंगोडीबी + सोलर प्रदर्शन

  2. पथ 'x' को अद्यतन करने से 'x' पर विरोध उत्पन्न होगा

  3. वादा के माध्यम से मोंगोडब कनेक्शन का पुन:उपयोग कैसे करें

  4. MongoDB में एक विशिष्ट नाम के साथ एक इंडेक्स कैसे बनाएं?

  5. स्प्रिंग डेटा के MongoTemplate और MongoRepository में क्या अंतर है?