В Mongo, как сделать отображение результатов при выполнении .find() так же, как и .findOne()

findOne() выводит объект json с довольно печатным текстом.

find() приводит к jarbled json object.

Как я могу сделать find() так же, как findOne(), когда он появится в оболочке mongo?

Ответ 1

Если вы используете скрипт с помощью javascript, вы можете использовать ответ dcrosta. Но если вы хотите красиво печатать непосредственно на интерактивной оболочке mongo, вам нужно добавить pretty() к вашим запросам find().

Введите в оболочке: db.yourcollection.find().pretty()

Ответ 2

Объект курсора, возвращаемый find(), поддерживает forEach(), поэтому вы можете использовать:

db.foo.find().forEach(printjson)

Однако обратите внимание, что в отличие от вывода по умолчанию find(), который показывает первые 10 объектов, тогда вы можете выбрать, продолжать ли повторение или нет, forEach() будет итерировать весь результирующий набор. Таким образом, если ваш запрос возвращает много результатов, это может занять некоторое время и может быть не очень полезно. limit() здесь ваш друг.

Ответ 3

Правильный ответ уже предоставлен с помощью .pretty().

Однако, как примечание, вы также можете вызвать .toArray() на курсор, чтобы получить документы в виде массива javascript JSON.

db.foo.find().toArray()