মোঙ্গোডিবি'র শেলটিতে কীভাবে 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
@ লুকাস উইক্টর হ্যাঁ, আপনি একটি OME HOME / .mongorc.js ফাইল তৈরি করতে পারেন এবং সেই শেলব্যাচসাইজ সেটিংটি সেখানে রাখতে পারেন। আমার ক্যোয়ারী ব্যাচের আকারের সেটিং এবং আরএস.স্লাভওক () সক্ষম করেছে। কমান্ডলাইনের মাধ্যমে --eval ব্যবহার করার সময় এর ব্যবহারটি কিছুটা আলাদা। দেখুন: docs.mongodb.com/manual/mongo/#mongorc-js-file
matias elgart

1
দারুণ! ধন্যবাদ @matiaselgart
Lukasz Wiktor

লিঙ্কটি পুরানো, এতে কোনও তথ্য নেই। এছাড়াও, আমি কি পরিবেশের পরিবর্তনশীল হিসাবে এটি পাস করতে পারি?
phil294

157

শেল থেকে আপনি যদি সমস্ত ফলাফল দেখাতে চান তবে db.collection.find().toArray()তা ছাড়া আপনি সমস্ত ফলাফল পেতে পারেন।


এই. যদি আপনি কেবল সেগুলি শেলটিতে চান যাতে আপনি কেটে পেস্ট করতে পারেন তবে এটি যথেষ্ট।
সুপারলুমিনিয়

এটি আরও কার্যকর
11.3 এ আওয়ার্জ করুন

এটি আমার জন্য ঠিক কী করেছিল। সত্য বলা উচিত আমার রোবঙ্গো আউটপুট থেকে সমস্ত ফলাফল সংরক্ষণ করার একটি উপায় প্রয়োজন needed ধন্যবাদ!
অ্যান্ড্রেস বোটেরো

এটি দুর্দান্ত, এবং এটি আমাকে ফলাফলটি জিকিউ-তে পাইপ করতে দেবে :)
ওমর ভ্যান ক্লাইটেন

নিখুঁত সমাধান! ম্যান, এটি খুব দরকারী।
কোডারপিসি

93

আপনি itপরবর্তী 20 টি ফলাফলের পুনরাবৃত্তি করতে শেলের ভিতরে ব্যবহার করতে পারেন । itআপনি যদি "আরও" দেখেন তবে কেবল টাইপ করুন এবং আপনি পরবর্তী 20 টি আইটেম দেখতে পাবেন।


35
ওহ এটি কীভাবে ব্যবহার না করে সমস্ত প্রিন্ট আউট করা যায় তা সম্পর্কেit
অবিচ্ছিন্নতা

15
ধন্যবাদ অর্ধদান, আপনি আপনার ব্যবহারকারী নামটি দ্বিগুণ বলেছেন যে আপনি!
cassi.lup

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));});

যা foo থেকে কেবলমাত্র _id এবং নামের ক্ষেত্রটি ফিরে আসবে।


1
আমার পছন্দ হয়েছে এটি শেল স্ক্রিপ্টে চলতে পারে (মঙ্গো ক্লায়েন্ট সহ --eval)
ঝেং কাই

1
@ ঝেংকাই যদি আপনি কোনও স্ক্রিপ্ট ব্যবহার করে থাকেন এবং শেলের মধ্যে না থাকেন তবে শেলব্যাচসাইজ প্রাসঙ্গিক নয় কারণ আপনার ফলাফলগুলি শেলের মাধ্যমে আপনার পুনরাবৃত্তি হবে না, আপনাকে নিজেই এটি করতে হবে।
অস্যা কামস্কি

টজসন () ঠিক সেটাই ছিল যা আমি ডিবিকিউয়ারি থেকে রূপান্তর করতে চেয়েছিলাম আপনাকে ধন্যবাদ!
মার্ক পাইসাক - ট্রিলন.ও

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/references/method/db.collection.find/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.