जब आप mongoimport
. का उपयोग करते हैं MongoDB में फ़ाइलें आयात करने के लिए, आपके पास मौजूदा दस्तावेज़ों को उन दस्तावेज़ों के साथ मर्ज करने का विकल्प है जिन्हें आप आयात कर रहे हैं।
इस मामले में, यदि किसी आयातित दस्तावेज़ में समान _id
है आप जिस संग्रह में आयात कर रहे हैं, उसमें मौजूदा दस्तावेज़ के रूप में मान, मौजूदा दस्तावेज़ को आयात किए जा रहे दस्तावेज़ के साथ मिला दिया जाएगा।
आप कोई अन्य फ़ील्ड भी निर्दिष्ट कर सकते हैं (_id
. के अलावा) फ़ील्ड) यदि आवश्यक हो तो मेल खाने वाला फ़ील्ड होना चाहिए।
जब आप दस्तावेज़ों को मर्ज करते हैं, तो परिणामी दस्तावेज़ मौजूदा डेटा को आयातित फ़ाइल में मौजूद किसी भी नए डेटा के साथ जोड़ देगा। कोई भी डेटा जो समान है वही रहेगा। किसी भी परस्पर विरोधी डेटा के परिणामस्वरूप आयातित फ़ाइल का डेटा मौजूदा डेटा को अधिलेखित कर देगा। यदि किसी आयातित दस्तावेज़ में MongoDB संग्रह में संबंधित दस्तावेज़ में कोई फ़ील्ड नहीं है, तो वह फ़ील्ड संग्रह में अपरिवर्तित रहेगी (अर्थात इसे हटाया या बदला नहीं जाएगा)।
दस्तावेज़ों को mongoimport
के साथ मर्ज करने का तरीका merge
. का उपयोग करना है मोड।
उदाहरण
मान लीजिए हमारे पास pets
. नामक संग्रह है जिसमें निम्नलिखित दस्तावेज हैं:
db.pets.find()
परिणाम:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
और हमारे पास निम्न JSON फ़ाइल है जिसे pets.json
. कहा जाता है :
{"_id":2.0,"name":"Fetch","type":"Dog","weight":40.0} {"_id":3.0,"weight":10.0} {"_id":4.0,"name":"Hop","type":"Kangaroo","weight":60.0}
निम्न आदेश JSON फ़ाइल को संग्रह में आयात करता है:
mongoimport --db=PetHotel --collection=pets --mode=merge --file=data/pets.json
यह merge
. का उपयोग करता है मिलान करने वाले दस्तावेज़ों को आयातित दस्तावेज़ों के साथ मर्ज करने के लिए मोड।
परिणाम जांचें
आइए अब इस संग्रह पर एक नज़र डालते हैं।
db.pets.find()
परिणाम:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 40 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 10 } { "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 }
हम देख सकते हैं कि दस्तावेज़ 1 अपरिवर्तित है, दस्तावेज़ 2 का नाम फ़ील्ड बदलकर Fetch
. हो गया है , और इसका weight
. भी है फ़ील्ड जोड़ा गया.. दस्तावेज़ 3 में एक वज़न फ़ील्ड भी जोड़ा गया है, और दस्तावेज़ 4 डाला गया है।
अप्सर्ट फ़ील्ड बदलें
आप --upsertFields
. का उपयोग कर सकते हैं _id
. के अलावा कोई अन्य फ़ील्ड निर्दिष्ट करने के लिए पैरामीटर के खिलाफ मैच करने के लिए। इस पैरामीटर का उपयोग करते समय, फ़ील्ड को अल्पविराम से अलग की गई सूची के रूप में पास करें।
मान लीजिए कि हमारे पास एक और JSON फ़ाइल है जिसे pets2.json
. कहा जाता है जिसे हम आयात करना चाहते हैं, और यह इस तरह दिखता है:
{"name":"Wag","type":"Dog","weight":20.0,"gooddog":true} {"name":"Bubbles","type":"Fish"}
इस दस्तावेज़ में _id
. शामिल नहीं है फ़ील्ड, इसलिए हमें अन्य फ़ील्ड के साथ मिलान करने की आवश्यकता होगी जो प्रत्येक दस्तावेज़ को विशिष्ट रूप से पहचानते हैं। इस मामले में हम name
. का उपयोग कर सकते हैं और type
खेत।
इसलिए हम निम्नलिखित का उपयोग कर सकते हैं mongoimport
आदेश:
mongoimport --db=PetHotel --collection=pets --mode=merge --upsertFields=name,type --file=data/pets2.json
आइए अब संग्रह को फिर से देखें:
db.pets.find()
परिणाम:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "gooddog" : true, "weight" : 20 } { "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 40 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 10 } { "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 } { "_id" : ObjectId("5ff0548dd991410169412300"), "name" : "Bubbles", "type" : "Fish" }
हम देख सकते हैं कि वैग को अपडेट कर दिया गया है (लेकिन _id
मान समान रहता है)।
दूसरी ओर, बुलबुले का ऊपरी क्षेत्रों से कोई मेल नहीं था और इसलिए उन्हें डाला गया था।
mongoimport
की जांच करें
mongoimport
MongoDB डेटाबेस टूल्स पैकेज का हिस्सा है। MongoDB डेटाबेस टूल्स MongoDB के साथ काम करने के लिए कमांड-लाइन उपयोगिताओं का एक सूट है।
यदि आप सुनिश्चित नहीं हैं कि आपके पास MongoDB डेटाबेस टूल्स/mongoimport
है या नहीं स्थापित है, जाँच करने के लिए अपने टर्मिनल या कमांड प्रॉम्प्ट में निम्न कमांड चलाने का प्रयास करें:
mongoimport --version
यदि आपके पास यह है, तो आपको संस्करण की जानकारी आदि देखनी चाहिए। यदि आपके पास यह नहीं है, तो आप इसे अपने सिस्टम पर स्थापित करने के लिए MongoDB वेबसाइट पर इंस्टॉलेशन निर्देशों का उपयोग कर सकते हैं।
कहां कमांड चलाएं?
मत भूलो, आपको mongoimport
चलाने की आवश्यकता है आपके सिस्टम की कमांड लाइन (जैसे एक नया टर्मिनल या कमांड प्रॉम्प्ट विंडो) से कमांड।
उन्हें mongo
. से न चलाएं सीप।