Возвращаемое значение db.collection.find()
относится к типу курсора. Выполнение этой команды из оболочки создаст курсор и покажет вам первую страницу данных. Остальное можно начать, повторив команду «it».
Я думаю, что область действия переменных, используемых во время выполнения сценария eval'd, предназначена только для времени жизни сценария (данные могут быть сохранены в коллекции, конечно), поэтому, как только сценарий завершает работу, эти переменные курсора больше не существуют, и поэтому Вы могли бы отправить еще один сценарий Eval для страницы данных. Таким образом, поведение, которое вы получаете во время сеанса оболочки, на самом деле не будет работать из сценария eval.
Чтобы приблизиться к поведению, вы можете запустить что-то вроде этого:
mongo dbname --eval "db.collection.find().forEach(printjson)"
Это показывает, что команда действительно выполняется и создает курсор, который затем можно перебрать, отправив вывод в stdout.
Редактировать: Я думаю, что я пытался подчеркнуть, что команда, которую вы выполняете, работает, просто вывод не соответствует вашим ожиданиям.