Гарний друк у оболонці MongoDB за замовчуванням


516

Чи є спосіб сказати Монго на гарне друкування? Наразі все виводиться в один рядок і його важко читати, особливо з вкладеними масивами та документами.


Тепер: як ви друкуєте його із зовнішнього JavaScript, завантаженого в Монго?
Вітольд Качурба

@WitoldKaczurba Спробуйте пошукати відповідь на своє запитання. Якщо ви не знайдете відповіді, вперед і опублікуйте це як нове запитання.
MForMarlon

Відповіді:


868

( зверніть увагу: це відповідь на оригінальну версію питання, яка не мала вимог до "за замовчуванням" )

Ви можете попросити, щоб це було гарненько.

db.collection.find().pretty()

18
Якщо ви хочете вивести кольорові кольори та інші вдосконалення, ознайомтеся з github.com/TylerBrock/mongo-hacker @SAFX
Ryan Schumacher

Тепер: як ви друкуєте його із зовнішнього JavaScript, завантаженого в Монго? Це не спрацює ...
Вітольд Качурба

416

Ви можете додати

DBQuery.prototype._prettyShell = true

у ваш файл, $HOME/.mongorc.jsщоб за умовчанням можна було друкувати в усьому світі.


13
Ви хочете зробити власну функцію, яка відключить її для вас. Додайте це до свого $HOME/.mongorc.js: gist.github.com/mathrawka/6239405 Тоді ви можете зробити щось на зразок db.users.find (). Потворне (), щоб отримати його без гарного друку.
staackuser2

5
+1 Це чудово. Для тих, хто не має .mongorc.js файл у папці $ HOME; ви можете створити цей файл і додати в нього команди. Після перезавантаження оболонки вона працює!
previous_developer

Як я можу перевірити в кліпі або в оболонці монго, що ця опція ввімкнена? Я маю на увазі, чи є спеціальна команда для неї, як mongo --checkConf 'pretty', не зателефонувавши,db.collection.find().limit(1)
Зелений

1
@ staackuser2, схоже, це посилання розірвано :(
micseydel

Це має бути прийнятою відповіддю, оскільки питання вказується на: як зробити це варіантом за замовчуванням. Користувач уже знайомий з методом .pretty (), але не хоче писати його щоразу
Аріель Монако

54

(зверніть увагу: це відповідь на оновлене запитання)

Ви можете зробити це в CLI:

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

І це завжди дасть неабиякі результати.


1
Це працювало для мене чудово. | Версія оболонки MongoDB: 2.6.7 та версія Oh-My- Zsh e55c715
tjfwalker

20

Оскільки це в основному оболонка javascript, ви також можете використовувати 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

17

О, так я здогадуюсь .pretty () дорівнює:

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

8

Спробуйте спробувати Mongo-хакер (модуль вузла), він завжди друкує досить. https://github.com/TylerBrock/mongo-hacker

Більше це покращує оболонку монго (підтримує лише версію> 2.4, поточна версія - 3.0), як

  • Забарвлення
  • Додаткові команди оболонки (рахувати документи / рахувати документи / тощо)
  • Доповнення API (db.collection.find ({...}). Last (), db.collection.find ({...}). Reverse () тощо)
  • Рамка агрегації

Я використовую поки у виробництві env, проблем поки немає.


Що робити, якщо у мене немає mongodb, щойно встановлений метеор?
pihentagy

Примітка: коли ви встановлюєте mongo-хакер за допомогою npm, він, мабуть, перезаписується $HOME/.mongorc.js.
Хубро

1

Дійшов до питання, але не міг зрозуміти, як надрукувати його від зовнішньо завантаженого монго. Тому:

Це працює для консолі: і надається перевагу в консолі, але не працює у зовнішньому завантаженому монгом JavaScript:

db.quizes.find().pretty()

Це працює у зовнішньому завантаженому монго скриптом:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.