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

MongoDB में फ़ाइल आयात करते समय दस्तावेज़ों को कैसे मर्ज करें

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कैसे unhideIndex () MongoDB में काम करता है

  2. MongoDB में मतदान प्रणाली को मॉडल करने का सबसे अच्छा तरीका

  3. Mongodb का उपयोग करके गैर-संबंधपरक डेटाबेस के साथ शुरुआत करना

  4. डेटा स्रोत को स्वतः कॉन्फ़िगर करने में विफल:'spring.datasource.url' निर्दिष्ट नहीं है

  5. MongoDB और C# ड्राइवर का उपयोग करके उप दस्तावेज़ संग्रह को कैसे क्वेरी करें?