Robomongo का उपयोग करके MongoDB से JSON को कैसे निर्यात करें


108

इसलिए मुझे इसके बारे में ज्यादा जानकारी नहीं है MongoDB। मैं RoboMongoएक MongoDB से कनेक्ट करने का उपयोग कर रहा हूं। मुझे यह करने की आवश्यकता है - उस MongoDB में एक संग्रह है। मैं उस संग्रह से डेटा निर्यात करना चाहता हूं ताकि मैं इसे एक फ़ाइल में सहेज सकूं।

मैंने संग्रह के डेटा को पाठ के रूप में खोलने के लिए इंटरफ़ेस का उपयोग किया और एक Ctrl+ Aऔर एक पाठ फ़ाइल में चिपकाया। हालाँकि, मैंने पाया कि सभी डेटा की प्रतिलिपि नहीं बनाई गई है और यह भी कि पाठ डेटा में कई टिप्पणियां थीं जो स्वाभाविक रूप से JSON को तोड़ती हैं।

मुझे आश्चर्य हो रहा है कि क्या रोबो मोंगो के पास एक Export As JSONसुविधा है ताकि मैं एक साफ निर्यात कर सकूं ।

किसी भी संकेत की सराहना की है!


आप विशेष संग्रह या पूर्ण db निर्यात करना चाहते हैं?
रमेश मुरुगेसन

1
यह रोबोमोंगो की वर्तमान विशेषता नहीं है, लेकिन मैंने जीथब इश्यू कतार में एक फीचर सुझाव जोड़ा है: जेएसएन एक्सपोर्ट जोड़ें । एक सामान्य सुझाव है कि आयात / निर्यात को एकीकृत किया जाना चाहिए , लेकिन अधिक विस्तृत / व्यावहारिक उपयोग के मामले सहायक होंगे। उदाहरण के लिए, क्या यह समर्थन जेन्सन को एक संग्रह, एक खोज क्वेरी, एक एकत्रीकरण पाइपलाइन से निर्यात करना चाहिए? वर्तमान में आपका सबसे अच्छा विकल्प मानक mongoexportकमांड लाइन टूल का उपयोग करना है ।
स्टेनी

1
@ श्टनी - आपकी टिप्पणी के लिए धन्यवाद। मैं आपके प्रश्न के उत्तर में अनुमान लगाता हूं - एक ग्राहक अनुभव के दृष्टिकोण से, यह वास्तव में मायने नहीं रखता है। अधिकांश अन्य DB इंटरफेस में, प्रवाह यह है कि आप एक क्वेरी (क्रिटेरेरा के साथ या बिना) चलाते हैं, परिणामों का एक सेट प्राप्त करते हैं। राइट क्लिक करें और कहें "निर्यात परिणाम के रूप में ..." तो यहां भी लागू होना चाहिए। इससे कोई फर्क नहीं पड़ता कि मैं संपूर्ण संग्रह या खोज क्वेरी निर्यात कर रहा हूं। यदि परिणाम पैनल में प्रदर्शित हो सकता है, तो यह निर्यात योग्य होना चाहिए।
अपरिभाषित चर

1
बस आप ऐसा कर सकते हैंmongoexport --uri='mongodb://someUser@mongodb0.example.com:27017/marketing' --collection=contacts --out=contacts.json
नरेन

जवाबों:


63

आप tojsonप्रत्येक रिकॉर्ड को JSON को MongoDB शेल स्क्रिप्ट में परिवर्तित करने के लिए उपयोग कर सकते हैं ।

इस स्क्रिप्ट को RoboMongo में चलाएं:

var cursor = db.getCollection('foo').find({}, {});
while(cursor.hasNext()) {
    print(tojson(cursor.next()))
}

यह JSON जैसी सरणी के रूप में सभी परिणाम प्रिंट करता है।

परिणाम वास्तव में JSON नहीं है! कुछ प्रकार, जैसे दिनांक और ऑब्जेक्ट आईडी, जावास्क्रिप्ट फ़ंक्शन कॉल, जैसे, प्रिंट किए जाते हैं ISODate("2016-03-03T12:15:49.996Z")

बड़े परिणाम सेट के लिए बहुत कुशल नहीं हो सकता है, लेकिन आप क्वेरी को सीमित कर सकते हैं। वैकल्पिक रूप से, आप उपयोग कर सकते हैं mongoexport


3
यह जेनसन को मान्य नहीं करता है। सिर्फ json-serialized रिकॉर्ड्स एक के बाद एक
ruX

कई उपयोग-मामलों के लिए, कोई tojson(db.getCollection(...).find(...)["_batch"])सर्वर से प्राप्त वर्तमान बैच की संपूर्णता का उत्पादन करने के लिए उपयोग कर सकता है।
युवल

@ युयुअल का शाब्दिक अर्थ है ["_batch"]? क्या आप एक उदाहरण दे सकते हैं कि इसका उपयोग कैसे किया जाए? मैंने रोबो 3 टी 1.2.1 के साथ यह कोशिश की, लेकिन यह केवल कहता है "स्क्रिप्ट सफलतापूर्वक निष्पादित हुई, लेकिन दिखाने के लिए कोई परिणाम नहीं हैं"।
फ्लोरियन विंटर

7
@FlorianWinter के आस-पास फ़िडलिंग से बस यादृच्छिक निष्कर्षों से था। एक बेहतर उपाय है tojson(db.getCollection(...).find(...).toArray())
युवल

@ युवल नाइस! यह सबसे आसान उपाय है, फिर भी मेरी तुलना में बेहतर है। इसे उत्तर के रूप में पोस्ट करने पर विचार करें। (या मेरा संपादन करें, लेकिन फिर मुझे वह सारा श्रेय मिलेगा, जिसके आप हकदार हैं, जो कुछ अनुचित होगा ...)
फ्लोरियन विंटर

58

एक त्वरित और गंदा तरीका: बस के रूप में अपनी क्वेरी लिखें db.getCollection('collection').find({}).toArray()और राइट क्लिक करें Copy JSON। अपनी पसंद के संपादक में डेटा चिपकाएँ।

यहां छवि विवरण दर्ज करें


4
साफ! Robo3t में निर्यात कार्यक्षमता की कमी को देखते हुए बिल्कुल भी गंदा नहीं है। अन्य सुझाए गए समाधानों की तुलना में डेटा के छोटे सेटों के लिए बहुत आसान है।
इल्या लुज़ियानिन

30

रोबोमोंगो की शेल कार्यक्षमता समस्या का समाधान करेगी। मेरे मामले में मुझे CSV प्रारूप के रूप में कुछ स्तंभों की आवश्यकता थी।

var cursor = db.getCollection('Member_details').find({Category: 'CUST'},{CustomerId :1,Name :1,_id:0})

while (cursor.hasNext()) {
    var record = cursor.next();   
    print(record.CustomerID + "," + record.Name)
}

Output : -------

334, Harison
433, Rechard
453, Michel
533, Pal

1
क्या इस स्क्रिप्ट के आउटपुट को एक csv में स्थानीय रूप से व्हिटिन रोबोमोंगो शेल में लिखना संभव है?
xxxvincxxx

यह मुझे "स्क्रिप्ट को सफलतापूर्वक निष्पादित करता है, लेकिन दिखाने के लिए कोई परिणाम नहीं है"
शनिका एडिरीवेरा

त्रुटि: पंक्ति 10: असाइनमेंट में अमान्य बाएं हाथ की ओर
यूजेन सोनिक

19

वहाँ कुछ MongoDB GUI हैं, उनमें से कुछ में डेटा निर्यात के लिए अंतर्निहित समर्थन है। आपको http://mongodb-tools.com पर MongoDB GUIs की एक व्यापक सूची मिलेगी

आपने अपनी क्वेरी के परिणामों के निर्यात के बारे में पूछा है, न कि संपूर्ण संग्रहों के निर्यात के बारे में। दे दो 3T MongoChef MongoDB जीयूआई एक कोशिश, इस उपकरण अपने विशिष्ट उपयोग के लिए समर्थन हासिल है।


स्टूडियो 3T पूरी तरह से उम्मीद से आसान काम किया! : +1:
vinyll

16

आप एक स्प्रेडशीट में "फ़ाइल को निर्यात करें" कहते हैं? .csv पसंद है?

IMO यह रोबो 3T (पूर्व में रोबोमोंगो) में ऐसा करने का सबसे आसान तरीका है)

  1. रोबो 3T जीयूआई के ऊपरी दाहिने हिस्से में "टेक्स्ट मोड में देखें परिणाम" बटन है, इसे क्लिक करें और सब कुछ कॉपी करें

  2. इस वेबसाइट में सब कुछ पेस्ट करें: https://json-csv.com/

  3. डाउनलोड बटन पर क्लिक करें और अब आपके पास स्प्रैडशीट में है।

उम्मीद है कि यह किसी को मदद करता है, जैसा कि मैं चाहता हूं कि रोबो 3 टी में निर्यात क्षमताएं थीं


बहुत सरल है, धन्यवाद
Tính Ngô Quang

11

इस आदेश को शेल पर न चलाएं, अपने डेटाबेस का नाम, संग्रह नाम और फ़ाइल नाम के साथ कमांड प्रॉम्प्ट पर इस स्क्रिप्ट को दर्ज करें, सभी स्थान बदल रहे हैं ..

mongoexport --db (Database name) --collection (Collection Name) --out (File name).json

इससे मेरा काम बनता है।


8

मुझे नहीं लगता कि रोबोमोंगो में ऐसी सुविधा है। तो आप एक विशिष्ट संग्रह के लिए मोंगोएक्सपोर्ट के रूप में बेहतर मोंगॉडब फ़ंक्शन का उपयोग करते हैं।

http://docs.mongodb.org/manual/reference/program/mongoexport/#export-in-json-format

लेकिन अगर आप एक बैकअप समाधान की तलाश कर रहे हैं तो उपयोग करना बेहतर है

mongodump / mongorestore

5

अनीश के जवाब पर विस्तार करते हुए, मैं चाहता था कि मैं किसी भी प्रश्न को स्वचालित रूप से सभी फ़ील्डों के आउटपुट के लिए लागू कर सकता हूं। उन्हें प्रिंट स्टेटमेंट में परिभाषित करना है। यह शायद सरल किया जा सकता है लेकिन यह कुछ जल्दी और गंदा था जो बहुत अच्छा काम करता है:

var cursor = db.getCollection('foo').find({}, {bar: 1, baz: 1, created_at: 1, updated_at: 1}).sort({created_at: -1, updated_at: -1});

while (cursor.hasNext()) {
    var record = cursor.next();
    var output = "";
    for (var i in record) {
      output += record[i] + ",";
    };
    output = output.substring(0, output.length - 1);
    print(output);
}

4

यदि आप मोंगोइमपोर्ट का उपयोग करना चाहते हैं , तो आप इस तरह निर्यात करना चाहेंगे:

db.getCollection('tables')
  .find({_id: 'q3hrnnoKu2mnCL7kE'})
  .forEach(function(x){printjsononeline(x)});

2

रोबोमोंगो शेल स्क्रिप्ट का उपयोग करना:

//on the same db
var cursor = db.collectionname.find();

while (cursor.hasNext()) {
    var record = cursor.next();   
    db.new_collectionname.save(record);
}

मोंगॉडब के निर्यात और आयात कमांड का उपयोग करना

आप --jsonArrayअपने mongoexportआदेश में पैरामीटर / ध्वज जोड़ सकते हैं , यह परिणाम को एकल json सरणी के रूप में निर्यात करता है।

फिर --jsonArrayआयात करते समय ध्वज को फिर से निर्दिष्ट करें ।

या फ़ाइल में आरंभ और समाप्ति सरणी कोष्ठक [] को हटा दें, फिर आपकी संशोधित और निर्यात की गई फ़ाइल ध्वज के mongoimportबिना कमांड के साथ आयात करेगी --jsonArray

यहां पर अधिक निर्यात करें: https://docs.mongodb.org/manual/reference/program/mongoexport/#cmdoption--jsonArray

यहाँ आयात करें: https://docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption--jsonArray


1

मेरे पास यही मुद्दा था, और रोबोमोंगो (रोबो 3 टी 1.1.1) में चल रही स्क्रिप्ट भी मूल्यों को कॉपी करने की अनुमति नहीं देती है और कोई निर्यात विकल्प भी नहीं था। सबसे अच्छा तरीका मैं इसे हासिल कर सकता हूं, वह है mongoexport का उपयोग करना, यदि आपके स्थानीय पर mongodb स्थापित है, तो आप किसी भी सर्वर पर डेटाबेस से कनेक्ट करने और डेटा निकालने के लिए mongoexport का उपयोग कर सकते हैं

दूरस्थ सर्वर, और सीएसवी आउटपुट फ़ाइल पर डेटा से कनेक्ट करने के लिए, अपनी कमांड लाइन में निम्न मोंगोएक्स्पोर्ट चलाएं

mongoexport --host HOSTNAME --port PORT --username USERNAME --password "PASSWORD" --collection COLLECTION_NAME --db DATABASE_NAME --out OUTPUTFILE.csv --type=csv --fieldFile fields.txt

fieldFile: वांछित कॉलम निकालने में मदद करता है, उदा: फ़ील्ड्स की सामग्री। बस यह हो सकता है:

यूज़र आईडी

केवल 'userId' कॉलम के मान निकालने के लिए

रिमोट सर्वर पर डेटा, json आउटपुट फ़ाइल:

mongoexport --host HOST_NAME --port PORT --username USERNAME --password "PASSWORD" --collection COLECTION_NAME --db DATABASE_NAME --out OUTPUT.json

यह सभी फ़ील्ड्स को json फ़ाइल में निकालता है

लोकलहोस्ट पर डेटा (मोंगोडब लोकलहोस्ट पर चलना चाहिए)

mongoexport --db DATABASE_NAME --collection COLLECTION --out OUTPUT.json

संदर्भ: https://docs.mongodb.com/manual/reference/program/mongoexport/#use


1

उपाय:

mongoexport --db test --collection traffic --out traffic.json<br><br>

यहां छवि विवरण दर्ज करें

कहां:
डेटाबेस -> मॉक-सर्वर
कलेक्शन नाम -> एपीआई_डफ्स
आउटपुट फाइल नाम -> चाइल्डचोररेलिएंस.डसन


1

क्वेरी निष्पादित करने के लिए तैयार उत्पन्न करने वाले लोगों के लिए फ्लोरियन विंटर उत्तर का विस्तार ।

dropऔर insertManyक्वेरी का उपयोग कर cursor:

{
    // collection name
    var collection_name = 'foo';

    // query
    var cursor = db.getCollection(collection_name).find({});

    // drop collection and insert script
    print('db.' + collection_name + '.drop();');
    print('db.' + collection_name + '.insertMany([');

    // print documents
    while(cursor.hasNext()) {
        print(tojson(cursor.next()));

        if (cursor.hasNext()) // add trailing "," if not last item
            print(',');
    }

    // end script
    print(']);');
}

इसका आउटपुट इस तरह होगा:

db.foo.drop();
db.foo.insertMany([
{
    "_id" : ObjectId("abc"),
    "name" : "foo"
}
,
{
    "_id" : ObjectId("xyz"),
    "name" : "bar"
}
]);

0
  1. अपनी खोज करो
  2. JSON मोड में पुश बटन देखने के परिणाम
  3. शब्द के लिए ते परिणाम की प्रतिलिपि बनाएँ
  4. शब्द से परिणाम प्रिंट करें

जब मेरे पास मेरे दस्तावेज़ में तारीखें होती हैं, तो यह ISODate तत्व देता है जो कि मान्य json प्रारूप नहीं है।
कॉन्सटेंटिनो क्रोनमबर्गर

1
डेटाबेस निर्यात करने के लिए आप Word दस्तावेज़ का उपयोग क्यों करेंगे? और क्यों दुनिया में कोई भी डेटाबेस निर्यात मुद्रित करना चाहेगा?
maesk

@maesk 🤣🤣🤣🤣
चार्ली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.