Ładny wydruk w powłoce MongoDB jako domyślny

516

Czy istnieje sposób, aby powiedzieć Mongo, aby ładnie drukowała? Obecnie wszystko jest wyprowadzane do jednej linii i jest trudne do odczytania, szczególnie w przypadku zagnieżdżonych tablic i dokumentów.

rafian
źródło
Teraz: jak wydrukować go z zewnętrznego javascript załadowanego do Mongo?
Witold Kaczurba
@WitoldKaczurba Spróbuj wyszukać odpowiedź na swoje pytanie. Jeśli nie znajdziesz odpowiedzi, napisz ją jako nowe pytanie.
MForMarlon

Odpowiedzi:

868

( uwaga: jest to odpowiedź na oryginalną wersję pytania, która nie zawierała wymagań dla „domyślnej” )

Możesz poprosić o ładność.

db.collection.find().pretty()
Sergio Tulentsev
źródło
18
Jeśli chcesz wydrukować w kolorze + inne ulepszenia, sprawdź github.com/TylerBrock/mongo-hacker @SAFX
Ryan Schumacher
Teraz: jak wydrukować go z zewnętrznego javascript załadowanego do Mongo? To nie zadziała ...
Witold Kaczurba
416

Możesz dodać

DBQuery.prototype._prettyShell = true

do pliku, $HOME/.mongorc.jsaby domyślnie włączyć globalne drukowanie całkiem ładnie.

staackuser2
źródło
13
Będziesz chciał stworzyć niestandardową funkcję, która ją wyłączy. Dodaj to do $HOME/.mongorc.js: gist.github.com/mathrawka/6239405 Następnie możesz zrobić coś takiego jak db.users.find (). Ugly (), aby uzyskać to bez ładnego wydruku.
staackuser2
5
+1 To jest świetne. Dla tych, którzy nie mają pliku .mongorc.js w folderze $ HOME; możesz utworzyć ten plik i dodać do niego polecenia. Po ponownym uruchomieniu powłoki działa!
previous_developer
Jak mogę sprawdzić w powłoce cli lub mongo, czy ta opcja została włączona? Chodzi mi o to, czy istnieje specjalne polecenie, na przykład mongo --checkConf 'pretty'nie dzwonieniedb.collection.find().limit(1)
Green
1
@ staackuser2, ten link wydaje się być zepsuty :(
micseydel
To powinna być zaakceptowana odpowiedź, ponieważ pytanie jest skierowane: jak ustawić tę opcję jako domyślną. Użytkownik jest już zaznajomiony z metodą .pretty (), ale nie chce jej pisać za każdym razem
Ariel Monaco
54

(uwaga: jest to odpowiedź na zaktualizowane pytanie)

Możesz to zrobić na CLI:

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

I zawsze przyniesie ładne wyniki.

Bhanu Chawla
źródło
1
To działało dla mnie idealnie. | Wersja powłoki MongoDB: 2.6.7 i Oh-My-Zsh e55c715
tjfwalker
20

Ponieważ jest to w zasadzie powłoka javascript, możesz także użyć toArray():

db.collection.find().toArray()

Spowoduje to jednak wydrukowanie wszystkich dokumentów z kolekcji, w przeciwieństwie pretty()do iteracji. Patrz: http://docs.mongodb.org/manual/reference/method/cursor.toArray/

Aafreen Sheikh
źródło
2
Co ciekawe, z konsoli .toArray()funkcja wypisuje lepiej sformatowany JSON niż .pretty()funkcja. tj .: Pierwszy rekord z mojej kolekcji różni się od reszty (co może być problemem), ale .pretty()zrzuca go jako { "_id" : "VERSION", "v" : "1.5" }- wszystko w jednym wierszu, gdzie .toArray()sformatowane jest ładnie jak reszta rekordów.
wasatchwizard
17

Och, więc myślę, że .pretty () jest równa:

db.collection.find().forEach(printjson);
Goff
źródło
8

Spróbuj hakera Mongo (moduł węzła), zawsze drukuje się ładnie. https://github.com/TylerBrock/mongo-hacker

Więcej poprawia powłokę mongo (obsługuje tylko wersję> 2.4, obecna wersja to 3.0), jak

  • Koloryzacja
  • Dodatkowe polecenia powłoki (licz dokumenty / licz dokumenty / etc)
  • Dodatki API (db.collection.find ({...}). Last (), db.collection.find ({...}). Reverse () itp.)
  • Ramy agregacji

Używam od czasu env produkcji, żadnych problemów jeszcze.

Gaurav Gandhi
źródło
Co jeśli nie mam mongodb, właśnie zainstalowałem meteor?
pihentagy
Uwaga: gdy instalujesz mongo-hakera za pomocą npm, najwyraźniej nadpisuje $HOME/.mongorc.js.
Hubro,
1

Dotarłem do pytania, ale nie mogłem wymyślić, jak go wydrukować z mongo załadowanego zewnętrznie. Więc:

Działa to w przypadku konsoli: i jest preferowane w konsoli, ale nie działa w zewnętrznym javascript ładowanym przez mongo:

db.quizes.find().pretty()

Działa to w zewnętrznym javscript załadowanym w mongo:

db.quizes.find().forEach(printjson)
Witold Kaczurba
źródło
-1

Spójrz na to:

db.collection.find().pretty()
Mohammad Heydari
źródło