Красивая печать в оболочке MongoDB по умолчанию

403

Есть ли способ рассказать Монго о довольно печатном выходе? В настоящее время все выводится на одну строку, и ее трудно читать, особенно с вложенными массивами и документами.

Теги:
command-line-interface
mongo-shell

7 ответов

756
Лучший ответ

(обратите внимание: это ответ на исходную версию вопроса, у которой не было требований для "default" )

Вы можете попросить его быть красивым.

db.collection.find().pretty()
  • 17
    Если вы хотите, чтобы вывод был цветным + другие улучшения, посмотрите github.com/TylerBrock/mongo-hacker @SAFX
361

Вы можете добавить

DBQuery.prototype._prettyShell = true

к вашему файлу в $HOME/.mongorc.js, чтобы включить глобальную печать по умолчанию.

  • 13
    Вы захотите сделать пользовательскую функцию, которая отключит ее для вас. Добавьте это к вашему $HOME/.mongorc.js : gist.github.com/mathrawka/6239405 Затем вы можете сделать что-то вроде db.users.find (). Ugly (), чтобы получить его без красивой печати.
  • 4
    +1 Это здорово. Для тех, у кого нет файла .mongorc.js в папке $ HOME; Вы можете создать этот файл и добавить в него команды. После перезапуска оболочки все работает!
Показать ещё 3 комментария
37

(обратите внимание: это ответ на обновленный вопрос)

Вы можете просто сделать это в CLI:

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

И он всегда будет выводить хорошие результаты.

  • 0
    У меня не сработало - с помощью MongoDB 2.6.6 и (о боже) ZSH.
  • 1
    Это сработало для меня отлично. | Версия оболочки MongoDB: 2.6.7 и Oh-My-Zsh версия e55c715
13

О, так что я думаю .pretty() равно:

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

Поскольку это в основном оболочка javascript, вы также можете использовать toArray():

db.collection.find().toArray()

Однако это будет печатать все документы коллекции в отличие от pretty(), которые позволят вам выполнять итерацию. См. http://docs.mongodb.org/manual/reference/method/cursor.toArray/

  • 1
    Интересно, что из консоли .toArray() выводит лучше отформатированный JSON, чем .pretty() . то есть: первая запись моей коллекции отличается от остальных (что может быть проблемой), но .pretty() выдает ее как { "_id" : "VERSION", "v" : "1.5" } - все .pretty() одна строка, где .toArray() отформатировал его так же, как остальные записи ..
6

Попробуйте Mongo-hacker (модуль node), он всегда печатает красиво. https://github.com/TylerBrock/mongo-hacker

Больше он улучшает оболочку mongo (поддерживает только ver > 2.4, текущий ver равен 3.0), например

  • Colorization
  • Дополнительные команды оболочки (счетчики документов/счетчики документов и т.д.)
  • Добавления API (db.collection.find({...}). last(), db.collection.find({...}). reverse() и т.д.)
  • Структура агрегации

Я использую пока в производстве env, пока нет проблем.

  • 0
    Что если у меня нет mongodb, только что установил метеор?
  • 0
    Примечание: когда вы устанавливаете mongo-hacker с использованием npm, он перезаписывает $HOME/.mongorc.js .
1
db.collection.find().pretty()

выше команда сделает ваш результат следующим образом: Изображение 4658

stu - это имя моей коллекции, вместо этого вы должны использовать свое собственное имя коллекции. Я надеюсь, что скриншот поможет вам в хорошей форме.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню