Cukup mencetak dalam shell MongoDB sebagai default


516

Apakah ada cara untuk memberi tahu Mongo tentang hasil cetak yang cantik? Saat ini, semuanya adalah output ke satu baris dan sulit untuk dibaca, terutama dengan array dan dokumen bersarang.


Sekarang: bagaimana Anda mencetaknya dari javascript eksternal yang dimuat ke dalam bahasa Mongo?
Witold Kaczurba

@WitoldKaczurba Cobalah mencari jawaban untuk pertanyaan Anda. Jika Anda tidak menemukan jawaban, silakan dan posting sebagai pertanyaan baru.
MForMarlon

Jawaban:


868

( catatan: ini adalah jawaban untuk versi asli dari pertanyaan, yang tidak memiliki persyaratan untuk "default" )

Anda bisa meminta untuk menjadi cantik.

db.collection.find().pretty()

18
Jika Anda ingin output diwarnai + perangkat tambahan lainnya, periksa github.com/TylerBrock/mongo-hacker @SAFX
Ryan Schumacher

Sekarang: bagaimana Anda mencetaknya dari javascript eksternal yang dimuat ke dalam bahasa Mongo? Ini tidak akan berhasil ...
Witold Kaczurba

416

Anda dapat menambahkan

DBQuery.prototype._prettyShell = true

ke file Anda $HOME/.mongorc.jsuntuk mengaktifkan cukup cetak secara global.


13
Anda ingin membuat fungsi khusus yang menonaktifkannya untuk Anda. Tambahkan ini ke $HOME/.mongorc.js: gist.github.com/mathrawka/6239405 Kemudian Anda dapat melakukan sesuatu seperti db.users.find (). Ugly () untuk mendapatkannya tanpa cetak cantik.
staackuser2

5
+1 Ini luar biasa. Bagi mereka yang tidak memiliki file .mongorc.js di folder $ HOME; Anda dapat membuat file ini dan menambahkan perintah di dalamnya. Setelah Anda me-restart shell, itu berhasil!
previous_developer

Bagaimana saya bisa memverifikasi di cli atau di mongo shell bahwa opsi ini telah diaktifkan? Maksud saya, apakah ada perintah khusus untuk itu, seperti mongo --checkConf 'pretty', bukan dengan menelepondb.collection.find().limit(1)
Green

1
@ staackuser2, tautan itu tampaknya rusak :(
micseydel

Ini harus menjadi jawaban yang diterima karena pertanyaannya ditujukan: bagaimana menjadikan ini opsi default. Pengguna sudah terbiasa dengan metode .pretty () tetapi tidak ingin menulisnya setiap waktu
Ariel Monaco

54

(catatan: ini adalah jawaban untuk pertanyaan yang diperbarui)

Anda bisa melakukan ini di CLI:

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

Dan selalu akan menampilkan hasil yang bagus.


1
Ini bekerja dengan baik untuk saya. | Versi shell MongoDB: 2.6.7 dan versi Oh-My- Zsh e55c715
tjfwalker

20

Karena ini pada dasarnya adalah shell javascript, Anda juga dapat menggunakan toArray():

db.collection.find().toArray()

Namun, ini akan mencetak semua dokumen koleksi yang tidak seperti pretty()itu akan memungkinkan Anda untuk beralih. Lihat: http://docs.mongodb.org/manual/reference/method/cursor.toArray/


2
Cukup menarik, dari konsol .toArray()fungsi menghasilkan JSON yang diformat lebih baik daripada .pretty()fungsi. yaitu: Catatan pertama koleksi saya berbeda dari yang lain (yang mungkin menjadi masalah), tetapi .pretty()membuangnya sebagai { "_id" : "VERSION", "v" : "1.5" }- semua dalam satu baris, di mana .toArray()diformat dengan baik seperti sisa catatan ..
wasatchwizard

17

Oh, jadi saya kira .pretty () sama dengan:

db.collection.find().forEach(printjson);

8

Cobalah untuk Mongo-hacker (modul simpul), itu selalu mencetak cantik. https://github.com/TylerBrock/mongo-hacker

Lebih meningkatkan mongo shell (hanya mendukung ver> 2.4, ver saat ini 3.0), seperti

  • Pewarnaan
  • Perintah shell tambahan (hitung dokumen / hitung dokumen / dll)
  • Penambahan API (db.collection.find ({...}). Last (), db.collection.find ({...}). Reverse (), dll)
  • Kerangka Kerja Agregasi

Saya menggunakan untuk sementara dalam produksi env, belum ada masalah.


Bagaimana jika saya tidak punya mongodb, baru saja menginstal meteor?
pihentagy

Catatan: ketika Anda menginstal mongo-peretas menggunakan npm, tampaknya menimpa $HOME/.mongorc.js.
Hubro

1

Mendapat pertanyaan tetapi tidak tahu bagaimana cara mencetaknya dari mongo yang dimuat secara eksternal. Begitu:

Ini berfungsi untuk konsol: dan lebih disukai di konsol, tetapi tidak berfungsi di javascript eksternal mongo-loaded:

db.quizes.find().pretty()

Ini berfungsi di javascript skrip mongo eksternal:

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.