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