Stampa graziosa nella shell MongoDB come impostazione predefinita


516

C'è un modo per dire a Mongo di ottenere stampe piuttosto? Attualmente, tutto viene emesso su un'unica riga ed è difficile da leggere, specialmente con matrici e documenti nidificati.


Ora: come si stampa da javascript esterno caricato in Mongo?
Witold Kaczurba,

@WitoldKaczurba Prova a cercare la risposta alla tua domanda. Se non trovi una risposta, vai avanti e pubblicala come nuova domanda.
MForMarlon,

Risposte:



416

Puoi aggiungere

DBQuery.prototype._prettyShell = true

al tuo file $HOME/.mongorc.jsper abilitare la stampa carina a livello globale per impostazione predefinita.


13
Ti consigliamo di creare una funzione personalizzata che la disabiliti. Aggiungi questo al tuo $HOME/.mongorc.js: gist.github.com/mathrawka/6239405 Quindi puoi fare qualcosa come db.users.find (). Ugly () per ottenerlo senza una bella stampa.
staackuser2

5
+1 Questo è fantastico. Per coloro che non hanno un file .mongorc.js nella cartella $ HOME; puoi creare questo file e aggiungere comandi in esso. Dopo aver riavviato la shell, funziona!
previous_developer

Come posso verificare in una shell cli o in mongo che questa opzione è stata abilitata? Voglio dire, c'è un comando speciale per questo, tipo mongo --checkConf 'pretty', non chiamandodb.collection.find().limit(1)
Green

1
@ staackuser2, quel collegamento sembra interrotto :(
micseydel il

Questa dovrebbe essere la risposta accettata quando viene posta la domanda: come renderla un'opzione predefinita. L'utente ha già familiarità con il metodo .pretty () ma non vuole scriverlo ogni volta
Ariel Monaco

54

(nota: questa è la risposta alla domanda aggiornata)

Puoi farlo sulla CLI:

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

E produrrà sempre risultati piuttosto interessanti.


1
Questo ha funzionato perfettamente per me. | Versione shell MongoDB: 2.6.7 e versione Oh-My-Zsh e55c715
tjfwalker,

20

Essendo sostanzialmente una shell javascript, puoi anche usare toArray():

db.collection.find().toArray()

Tuttavia, questo stamperà tutti i documenti della raccolta a differenza di pretty()quello che ti permetterà di iterare. Consultare: http://docs.mongodb.org/manual/reference/method/cursor.toArray/


2
È interessante notare che dalla console la .toArray()funzione genera un formato JSON meglio formattato rispetto alla .pretty()funzione. vale a dire: il primo disco della mia collezione è diverso dal resto (il che potrebbe essere il problema), ma lo .pretty()scarica come { "_id" : "VERSION", "v" : "1.5" }- tutto su una riga, dove è stato .toArray()formattato come il resto dei dischi ..
wasatchwizard

17

Oh, quindi suppongo che .pretty () sia uguale a:

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

8

Prova a Mongo-hacker (modulo nodo), stampa sempre piuttosto. https://github.com/TylerBrock/mongo-hacker

Inoltre migliora la shell mongo (supporta solo la versione> 2.4, la versione corrente è 3.0), come

  • colorazione
  • Comandi shell aggiuntivi (conta documenti / conta documenti / ecc.)
  • Aggiunte API (db.collection.find ({...}). Last (), db.collection.find ({...}). Reverse (), ecc.)
  • Quadro di aggregazione

Sto usando per mentre in produzione env, nessun problema ancora.


Cosa succede se non ho mongodb, ho appena installato meteor?
Pihentagy,

Nota: quando installi mongo-hacker usando npm, apparentemente sovrascrive $HOME/.mongorc.js.
Hubro,

1

Sono arrivato alla domanda ma non sono riuscito a capire come stamparlo dal mongo caricato esternamente. Così:

Questo funziona per console: ed è preferito in console, ma non funziona in javascript esterno caricato da mongo:

db.quizes.find().pretty()

Funziona in javscript esterno caricato da mongo:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.