มีวิธีบอก Mongo ให้พิมพ์ออกมาสวยหรือไม่? ปัจจุบันทุกอย่างถูกส่งไปยังบรรทัดเดียวและอ่านได้ยากโดยเฉพาะอย่างยิ่งกับอาร์เรย์และเอกสารที่ซ้อนกัน
มีวิธีบอก Mongo ให้พิมพ์ออกมาสวยหรือไม่? ปัจจุบันทุกอย่างถูกส่งไปยังบรรทัดเดียวและอ่านได้ยากโดยเฉพาะอย่างยิ่งกับอาร์เรย์และเอกสารที่ซ้อนกัน
คำตอบ:
( หมายเหตุ: นี่คือคำตอบสำหรับคำถามดั้งเดิมซึ่งไม่มีข้อกำหนดสำหรับ "ค่าเริ่มต้น" )
คุณสามารถขอให้มันสวย
db.collection.find().pretty()
คุณสามารถเพิ่ม
DBQuery.prototype._prettyShell = true
ไปที่ไฟล์ของคุณ$HOME/.mongorc.js
เพื่อเปิดใช้งานการพิมพ์แบบทั่วโลก
$HOME/.mongorc.js
: gist.github.com/mathrawka/6239405 จากนั้นคุณสามารถทำบางสิ่งเช่น db.users.find (). ugly () เพื่อให้ได้โดยไม่ต้องพิมพ์สวย ๆ
mongo --checkConf 'pretty'
ไม่โทรdb.collection.find().limit(1)
(หมายเหตุ: นี่คือคำตอบสำหรับคำถามที่ปรับปรุงแล้ว)
คุณสามารถทำได้ใน CLI:
echo DBQuery.prototype._prettyShell = true >> ~/.mongorc.js
และมันจะให้ผลลัพธ์ที่ดีเสมอ
เนื่องจากมันเป็นเปลือกของจาวาสคริปต์คุณจึงสามารถใช้toArray()
:
db.collection.find().toArray()
อย่างไรก็ตามสิ่งนี้จะพิมพ์เอกสารทั้งหมดของคอลเล็กชันที่ไม่เหมือนpretty()
ที่จะอนุญาตให้คุณทำซ้ำ อ้างอิง: http://docs.mongodb.org/manual/reference/method/cursor.toArray/
.toArray()
ฟังก์ชั่นเอาต์พุต JSON ในรูปแบบที่ดีกว่า.pretty()
ฟังก์ชั่น เช่น: ระเบียนแรกของคอลเลกชันของฉันแตกต่างจากส่วนที่เหลือ (ซึ่งอาจเป็นปัญหา) แต่.pretty()
ทิ้งมันเป็น{ "_id" : "VERSION", "v" : "1.5" }
- ทั้งหมดในบรรทัดเดียวที่.toArray()
จัดรูปแบบมันดีเหมือนส่วนที่เหลือของระเบียน ..
โอ้ดังนั้นฉันเดา. wordty () เท่ากับ:
db.collection.find().forEach(printjson);
ลอง Mongo-hacker (โมดูลโหนด) มันจะพิมพ์ออกมาสวยเสมอ https://github.com/TylerBrock/mongo-hacker
ยิ่งไปกว่านั้นมันยังช่วยเพิ่ม mongo shell (รองรับ ver เท่านั้น> 2.4, ver ปัจจุบันคือ 3.0) เช่น
ฉันใช้สำหรับในขณะที่ env ผลิตยังไม่มีปัญหา
$HOME/.mongorc.js
ก็เห็นได้ชัดว่าเขียนทับ
มีคำถาม แต่ไม่สามารถหาวิธีพิมพ์ได้จาก mongo ที่โหลดจากภายนอก ดังนั้น:
ใช้งานได้กับคอนโซล:และเป็นที่ต้องการในคอนโซล แต่ไม่สามารถใช้งานได้ใน javascript ภายนอกที่โหลดโดย mongo:
db.quizes.find().pretty()
ใช้งานได้ใน javscript ที่โหลดจากภายนอก:
db.quizes.find().forEach(printjson)
ลองดู:
db.collection.find().pretty()