MongoDB के शेल में 20 से अधिक आइटम (दस्तावेज़) कैसे प्रिंट करें?


253
db.foo.find().limit(300)

नहीं करेंगे। यह अभी भी केवल 20 दस्तावेजों को प्रिंट करता है।

db.foo.find().toArray()
db.foo.find().forEach(printjson)

क्या दोनों प्रत्येक दस्तावेज़ के लिए 1-लाइन संस्करण के बजाय बहुत विस्तारित दृश्य प्रिंट करेंगे find():


डिफ़ॉल्ट मोंगो शेल में केवल पहले 20 दस्तावेज़ प्रिंट होते हैं, आप Type itशेल में टाइप करके अगले बैच 20 दस्तावेज़ प्राप्त कर सकते हैं । और इसी तरह।
रोज़ट्रेलर

जवाबों:


381

1
क्या यह लगातार बनाने का एक तरीका है?
लुकाज़ विकटोर

7
@LukaszWiktor हाँ, आप एक $ HOME / .mongorc.js फ़ाइल बना सकते हैं और उस शेलबैच को वहां स्थापित कर सकते हैं। मेरे पास क्वेरी बैच आकार सेटिंग और rsslaveOk () सक्षम है। कमांडलाइन के माध्यम से --eval का उपयोग करते समय इसका उपयोग थोड़ा अलग है। देखें: docs.mongodb.com/manual/mongo/#mongorc-js-file
matias elgart

1
एक दम बढ़िया! धन्यवाद @matiaselgart
लुकाज़

लिंक पुराना है, इसमें ऐसी कोई जानकारी नहीं है। इसके अलावा, क्या मैं इसे पर्यावरण चर के रूप में पारित कर सकता हूं?
phil294

157

यदि आप सभी परिणाम दिखाना चाहते हैं तो शेल से आप db.collection.find().toArray()इसके बिना सभी परिणाम प्राप्त कर सकते हैं ।


यह। यदि आप केवल एक शेल में उन सभी को चाहते हैं तो आप कट और पेस्ट कर सकते हैं, यह पर्याप्त है।
सुपरलुमिनरी

यह एक और अधिक उपयोगी है
एवरज

यह वास्तव में यह मेरे लिए क्या किया है। सच कहा जाए तो मुझे रोबोमोंगो आउटपुट से सभी परिणामों को बचाने के लिए एक तरीका चाहिए था। धन्यवाद!
एंड्रेस बोटेरो

यह बहुत अच्छा है, और इसने मुझे
jq पर

सही समाधान! यार, यह बहुत उपयोगी है।
कोडरपीसी

93

आप itअगले 20 परिणामों पर पुनरावृति करने के लिए शेल के अंदर का उपयोग कर सकते हैं । बस टाइप करें itयदि आप देखते हैं "अधिक है" और आप अगले 20 आइटम देखेंगे।


35
ओह, यह वास्तव में उपयोग करने के बिना सभी को कैसे प्रिंट करना हैit
nonopolarity

15
धन्यवाद हाफ़, आप अपने उपयोगकर्ता नाम से दो बार कहते हैं कि आप हैं!
cassi.lup 12

6
संपूर्ण विचार यह नहीं है कि पुनरावृति का उपयोग न करें
अमीर कोस्ट

2
मैंने यह अस्वीकार कर दिया क्योंकि यह वही है जो ओपी बचना चाहता था (जो कि डिफ़ॉल्ट व्यवहार है)।
crafter

41

हमेशा कर सकता है:

db.foo.find().forEach(function(f){print(tojson(f, '', true));});

उस कॉम्पैक्ट व्यू को पाने के लिए।

इसके अलावा, मुझे यह बहुत उपयोगी लगता है कि खोज द्वारा वापस आए क्षेत्रों को सीमित करें:

db.foo.find({},{name:1}).forEach(function(f){print(tojson(f, '', true));});

जो फू से केवल _id और नाम फ़ील्ड लौटाएगा।


1
मुझे यह पसंद है क्योंकि यह खोल स्क्रिप्ट (मोंगो क्लाइंट के साथ --eval) में चल सकता है
झेंग काई

1
@ZhengKai यदि आप एक स्क्रिप्ट का उपयोग कर रहे हैं और शेल में नहीं हैं तो शेलबैचसाइज प्रासंगिक नहीं है क्योंकि आपके परिणाम शेल द्वारा आपके लिए पुनरावृत्त नहीं होंगे, आपको इसे स्वयं करना होगा।
अस्या कामस्की

Tojson () बिल्कुल वही था जो मैं इसे DBQuery से परिवर्तित करने के लिए देख रहा था धन्यवाद!
मार्क पिज़्ज़ाक - त्रिलोन।

4

मेरा सुझाव है कि आपके पास एक ~/.mongorc.jsफ़ाइल होनी चाहिए ताकि आपको हर बार डिफ़ॉल्ट आकार निर्धारित न करना पड़े।

 # execute in your terminal
 touch ~/.mongorc.js
 echo 'DBQuery.shellBatchSize = 100;' > ~/.mongorc.js
 # add one more line to always prettyprint the ouput
 echo 'DBQuery.prototype._prettyShell = true; ' >> ~/.mongorc.js

आप और क्या कर सकते हैं, इसके बारे में अधिक जानने के लिए, मैं आपको इस लेख को देखने का सुझाव देता हूं: http://mo.github.io/2017/01/22/mongo-db-tips-and-tricks.html


0

मोंगो शेल में, यदि दिए गए कर्सर को वेरिएबल कीवर्ड का उपयोग करके एक वेरिएबल को नहीं सौंपा गया है, तो कर्सर स्वचालित रूप से क्वेरी से मेल खाने वाले पहले 20 दस्तावेजों तक पहुंचने के लिए पुनरावृत्त होता है। स्वचालित रूप से पुनरावृत्त दस्तावेजों की संख्या को बदलने के लिए आप DBQuery.shellBatchSize चर सेट कर सकते हैं।

संदर्भ - https://docs.mongodb.com/v3.2/reference/method/db.collection.find/

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