सवाल मोंगो लिपि में फाइल लेखन ऑपरेशन?


क्या मोंगो जेएस स्क्रिप्ट से फ़ाइल में क्वेरी परिणाम लिखना संभव है। मैंने बहुत कुछ खोजा है, लेकिन मुझे कोई समाधान नहीं मिला।

उदाहरण के लिए: -

cursor = db.users.find();

while(cursor.hasNext()) {
  cursor.next();
  // writing the cursor output to file ????<br/>
}

44
2018-01-23 11:51


मूल


बीटीडब्ल्यू, अगर आप हमेशा पूरे संग्रह को फिर से चालू कर रहे हैं तो यह मोंगोडम्प का उपयोग करने के लिए अधिक कुशल है। एक स्क्रिप्ट का उपयोग करना अधिक लचीला है, आप प्रिंटिंग परिणामों से पहले सभी प्रकार की प्रसंस्करण कर सकते हैं। - milan
अधिक mongodump - averasko


जवाब:


आप प्रिंट का उपयोग कर सकते हैं और फिर आउटपुट रीडायरेक्ट कर सकते हैं:

script.js:

cursor = db.users.find();
while(cursor.hasNext()){
    printjson(cursor.next());
}

फिर स्क्रिप्ट चलाएं और आउटपुट को फ़ाइल में रीडायरेक्ट करें:

mongo --quiet script.js > result.txt

75
2018-01-23 13:07



हाँ, यह मुमकिन है। लेकिन मैं स्क्रिप्ट को डिमन के रूप में चलाने की कोशिश कर रहा हूं। तो केवल मैंने फाइल लेखन कार्यों के लिए कहा। धन्यवाद। - sudesh
मैं कैसे निर्दिष्ट कर सकता हूं कि स्क्रिप्ट का उपयोग किस डेटाबेस का होना चाहिए? - Nelu
@NeluMalancea आप बस किसी भी मोंगो शेल कमांड लाइन तर्क का उपयोग कर सकते हैं। तो दूरस्थ होस्ट पर डेटाबेस निर्दिष्ट करने के लिए, उदा। mongo --host MYSERVER DATABASENAME --quiet script.js> result.txt - AndrewL
@NeluMalancea आप उपयोग कर सकते हैं dr= new Mongo("127.0.0.1:27017").getDB("dr") तो आप अपने संग्रह को डॉ के साथ उपसर्ग करते हैं। इससे आपको एक से अधिक डेटाबेस के साथ काम करने में मदद मिलेगी; यानी एक प्रति से दूसरे में पढ़ा जाता है आदि। - kenzie
यह उत्तर मूल मंशा को पूरा नहीं करता है। क्या एक मोंगो स्क्रिप्ट से फ़ाइल में लिखने का कोई तरीका है? - comiventor


http://www.mongodb.org/display/DOCS/Scripting+the+shell अनुच्छेद "लिखित और इंटरैक्टिव / प्रिंटिंग के बीच मतभेद"।

./mongo server.com/mydb --quiet --eval "db.users.find ()। forEach (printjson);" > 1.txt


22
2017-10-11 00:17



महान चाल! किसी भी फाइल के बिना। - ruX
यदि आप चरित्र से बचने के कारण खोज () के अंदर कोई प्रश्न रखना चाहते हैं तो यह दृष्टिकोण मुश्किल हो जाता है। उस स्थिति में, एक अलग क्वेरी फ़ाइल के साथ ऊपर @milan के उत्तर का उपयोग करने के लिए सबसे अच्छा है - AndrewL
@AndrewL क्या आप इसके बजाय सिंगल कोट्स का उपयोग कर सकते हैं? मुझे लगता है कि ऐसा से ज्यादा भागने या कुछ नहीं करना चाहिए, है ना? - Erhannis
कुछ फ़ील्ड / कस्टम-फॉर्मेट प्रिंट करने के लिए, इसका उपयोग करें: ".forEach (function (d) {print (d.id);});"। - Curtis Yallop
हां, आप सिंगल कोट्स का उपयोग कर सकते हैं जैसे खोज फ़िल्टर में। - Curtis Yallop


आप जबकि लूप का उपयोग कर छोड़ सकते हैं forEach():

db.users.find().forEach(printjson);

12
2018-03-14 15:13



यहां तक ​​कि अधिक कॉम्पैक्ट: db.users.find ()। ForEach (printjson); - AndrewL


एक का उपयोग करने के लिए यह आसान नहीं होगा मोंगो ड्राइवर एक सामान्य प्रयोजन भाषा (जैसे पायथन, रूबी, जावा, इत्यादि) के लिए और अपने परिणामों को उस फ़ाइल में लिखें, जिस प्रारूप में आप उपयोग कर सकते हैं (जैसे सीएसवी, इत्यादि)?

अद्यतन करें: के लिए प्रलेखन के अनुसार mongodump आप एक क्वेरी के साथ एक संग्रह निर्यात कर सकते हैं:

$ ./mongodump --db blog --collection posts
-q '{"created_at" : { "$gte" : {"$date" : 1293868800000},
                      "$lt"  : {"$date" : 1296460800000}
                    }
    }'

हालांकि आपको उस संग्रह को वापस करने या उपयोग करने के लिए मोंगोडीबी में आयात करने की आवश्यकता होगी mongoexport एक ही क्वेरी ध्वज का उपयोग कर जेएसओएन या सीएसवी के रूप में निर्यात करने के लिए (-q) जैसा mongodump


3
2018-01-23 11:54



आपके उत्तर के लिए धन्यवाद, लेकिन मैं चाहता हूं कि यह सादा जेएस में हो जो मोंगो खोल का उपयोग कर चलाए। - sudesh


अलग-अलग के लिए आपको सामग्री के साथ script.js फ़ाइल बनाना है:

mongo = new Mongo("localhost");
doctor = mongo.getDB("doctor");
users = doctor.getCollection("users");
cities = users.distinct("address.city");
printjson(cities);

फिर कंसोल रन में:

mongo --quiet script.js > result.txt

2
2018-06-08 10:36