พิมพ์สวยใน MongoDB เชลล์เป็นค่าเริ่มต้น


516

มีวิธีบอก Mongo ให้พิมพ์ออกมาสวยหรือไม่? ปัจจุบันทุกอย่างถูกส่งไปยังบรรทัดเดียวและอ่านได้ยากโดยเฉพาะอย่างยิ่งกับอาร์เรย์และเอกสารที่ซ้อนกัน


ตอนนี้: คุณจะพิมพ์จากจาวาสคริปต์ภายนอกที่โหลดลงใน Mongo ได้อย่างไร
Witold Kaczurba

@WitoldKaczurba ลองค้นหาคำตอบสำหรับคำถามของคุณ หากคุณไม่พบคำตอบให้ไปข้างหน้าแล้วโพสต์เป็นคำถามใหม่
MForMarlon

คำตอบ:


868

( หมายเหตุ: นี่คือคำตอบสำหรับคำถามดั้งเดิมซึ่งไม่มีข้อกำหนดสำหรับ "ค่าเริ่มต้น" )

คุณสามารถขอให้มันสวย

db.collection.find().pretty()

18
หากคุณต้องการผลลัพธ์ colorized + การปรับปรุงอื่น ๆ ลองดูที่github.com/TylerBrock/mongo-hacker @SAFX
Ryan Schumacher

ตอนนี้: คุณจะพิมพ์จากจาวาสคริปต์ภายนอกที่โหลดลงใน Mongo ได้อย่างไร นี้จะไม่ทำงาน ...
ลด์ Kaczurba

416

คุณสามารถเพิ่ม

DBQuery.prototype._prettyShell = true

ไปที่ไฟล์ของคุณ$HOME/.mongorc.jsเพื่อเปิดใช้งานการพิมพ์แบบทั่วโลก


13
คุณจะต้องการสร้างฟังก์ชั่นที่กำหนดเองซึ่งจะปิดการใช้งานสำหรับคุณ เพิ่มลงในของคุณ$HOME/.mongorc.js: gist.github.com/mathrawka/6239405 จากนั้นคุณสามารถทำบางสิ่งเช่น db.users.find (). ugly () เพื่อให้ได้โดยไม่ต้องพิมพ์สวย ๆ
staackuser2

5
+1 นี่ยอดเยี่ยม สำหรับผู้ที่ไม่มีไฟล์. Mongorc.js ในโฟลเดอร์ $ HOME คุณสามารถสร้างไฟล์นี้และเพิ่มคำสั่งในนั้น หลังจากคุณรีสตาร์ทเชลล์มันใช้งานได้!
previous_developer

ฉันจะตรวจสอบใน cli หรือใน mongo shell ว่าตัวเลือกนี้เปิดใช้งานได้อย่างไร? ฉันหมายความว่ามีคำสั่งพิเศษสำหรับมันเช่นmongo --checkConf 'pretty'ไม่โทรdb.collection.find().limit(1)
กรีน

1
@ staackuser2 ดูเหมือนว่าลิงก์นั้นจะใช้งานไม่ได้ :(
micseydel

นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจากคำถามนั้นชี้ไปที่: วิธีทำให้ตัวเลือกนี้เป็นค่าเริ่มต้น ผู้ใช้คุ้นเคยกับวิธีการ. translate () แต่ไม่ต้องการเขียนทุกครั้ง
Ariel Monaco

54

(หมายเหตุ: นี่คือคำตอบสำหรับคำถามที่ปรับปรุงแล้ว)

คุณสามารถทำได้ใน CLI:

echo DBQuery.prototype._prettyShell = true >> ~/.mongorc.js

และมันจะให้ผลลัพธ์ที่ดีเสมอ


1
สิ่งนี้ใช้ได้สำหรับฉันอย่างสมบูรณ์แบบ | MongoDB รุ่น shell: 2.6.7 และรุ่น Oh-My-Zsh e55c715
tjfwalker

20

เนื่องจากมันเป็นเปลือกของจาวาสคริปต์คุณจึงสามารถใช้toArray():

db.collection.find().toArray()

อย่างไรก็ตามสิ่งนี้จะพิมพ์เอกสารทั้งหมดของคอลเล็กชันที่ไม่เหมือนpretty()ที่จะอนุญาตให้คุณทำซ้ำ อ้างอิง: http://docs.mongodb.org/manual/reference/method/cursor.toArray/


2
น่าสนใจพอจากคอนโซล.toArray()ฟังก์ชั่นเอาต์พุต JSON ในรูปแบบที่ดีกว่า.pretty()ฟังก์ชั่น เช่น: ระเบียนแรกของคอลเลกชันของฉันแตกต่างจากส่วนที่เหลือ (ซึ่งอาจเป็นปัญหา) แต่.pretty()ทิ้งมันเป็น{ "_id" : "VERSION", "v" : "1.5" }- ทั้งหมดในบรรทัดเดียวที่.toArray()จัดรูปแบบมันดีเหมือนส่วนที่เหลือของระเบียน ..
wasatchwizard


8

ลอง Mongo-hacker (โมดูลโหนด) มันจะพิมพ์ออกมาสวยเสมอ https://github.com/TylerBrock/mongo-hacker

ยิ่งไปกว่านั้นมันยังช่วยเพิ่ม mongo shell (รองรับ ver เท่านั้น> 2.4, ver ปัจจุบันคือ 3.0) เช่น

  • colorization
  • คำสั่งเชลล์เพิ่มเติม (นับเอกสาร / นับเอกสาร / ฯลฯ )
  • การเพิ่ม API (db.collection.find ({... }). last (), db.collection.find ({... }). reverse (), ฯลฯ )
  • กรอบการรวม

ฉันใช้สำหรับในขณะที่ env ผลิตยังไม่มีปัญหา


ถ้าฉันไม่มี Mongodb แค่ติดตั้งดาวตก?
pihentagy

หมายเหตุ: เมื่อคุณติดตั้ง Mongo แฮกเกอร์ใช้ NPM $HOME/.mongorc.jsก็เห็นได้ชัดว่าเขียนทับ
Hubro

1

มีคำถาม แต่ไม่สามารถหาวิธีพิมพ์ได้จาก mongo ที่โหลดจากภายนอก ดังนั้น:

ใช้งานได้กับคอนโซล:และเป็นที่ต้องการในคอนโซล แต่ไม่สามารถใช้งานได้ใน javascript ภายนอกที่โหลดโดย mongo:

db.quizes.find().pretty()

ใช้งานได้ใน javscript ที่โหลดจากภายนอก:

db.quizes.find().forEach(printjson)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.