db.foo.find().limit(300)
จะไม่ทำมัน มันยังพิมพ์ออกมาเพียง 20 เอกสาร
db.foo.find().toArray()
db.foo.find().forEach(printjson)
ทั้งสองจะพิมพ์มุมมองที่ขยายออกมากของเอกสารแต่ละฉบับแทนที่จะเป็นเวอร์ชัน 1 บรรทัดสำหรับfind()
:
db.foo.find().limit(300)
จะไม่ทำมัน มันยังพิมพ์ออกมาเพียง 20 เอกสาร
db.foo.find().toArray()
db.foo.find().forEach(printjson)
ทั้งสองจะพิมพ์มุมมองที่ขยายออกมากของเอกสารแต่ละฉบับแทนที่จะเป็นเวอร์ชัน 1 บรรทัดสำหรับfind()
:
คำตอบ:
DBQuery.shellBatchSize = 300
จะทำ.
MongoDB Docs - ตั้งค่า mongo Shell - เปลี่ยน mongo Shell Batch Size
จากเชลล์หากคุณต้องการแสดงผลลัพธ์ทั้งหมดคุณสามารถทำได้db.collection.find().toArray()
เพื่อให้ได้ผลลัพธ์ทั้งหมดโดยไม่มีมัน
คุณสามารถใช้it
ด้านในของเชลล์เพื่อวนผลการค้นหา 20 รายการถัดไป เพียงพิมพ์it
ถ้าคุณเห็น "มีมากขึ้น" และคุณจะเห็น 20 รายการถัดไป
it
สามารถทำได้เสมอ:
db.foo.find().forEach(function(f){print(tojson(f, '', true));});
เพื่อให้ได้มุมมองที่กะทัดรัด
นอกจากนี้ฉันพบว่ามีประโยชน์มากในการ จำกัด ฟิลด์ที่ส่งคืนโดย find ดังนี้:
db.foo.find({},{name:1}).forEach(function(f){print(tojson(f, '', true));});
ซึ่งจะส่งกลับเฉพาะฟิลด์ _id และชื่อจาก foo
--eval
)
ฉันแนะนำให้คุณมี~/.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
ในเชลล์ mongo หากเคอร์เซอร์ที่ส่งคืนไม่ได้ถูกกำหนดให้กับตัวแปรโดยใช้คำสำคัญ var เคอร์เซอร์จะถูกทำซ้ำโดยอัตโนมัติเพื่อเข้าถึงเอกสาร 20 อันดับแรกที่ตรงกับคำค้นหา คุณสามารถตั้งค่าตัวแปร DBQuery.shellBatchSize เพื่อเปลี่ยนจำนวนเอกสารที่วนซ้ำอัตโนมัติ
ข้อมูลอ้างอิง - https://docs.mongodb.com/v3.2/reference/method/db.collection.find/
Type it
ในเชลล์ และอื่น ๆ