Существуют различия между interactive and scripted mode для оболочки.
При запуске JavaScript в оболочке курсор возвращаемый find()
запроса automatically iterated:
Метод db.collection.find() возвращает курсор. Чтобы получить доступ к документам, вам необходимо выполнить итерацию курсора. Однако в оболочке mongo, если возвращенный курсор не назначен переменной с использованием ключевого слова var, курсор автоматически повторяется до 20 раз для печати до первых 20 документов в результатах.
Если запустить то же JavaScript в сценарном режиме (т.е. прохождение через опцию командной строки, как --eval
), вам нужно явно итерация курсора и распечатать результаты с помощью print()
или printjson()
:
mongo myDB --quiet --eval 'printjson(db.myUserDocColl.find({"_id" : ObjectId("55fd20104ead737a83540a91")},{name:1,email:1,mobileNumber:1,"_id":0}).toArray())'
I также добавила опцию --quiet
в эту примерную командную строку, которая удаляет дополнительный вывод, который часто не нужен для скрипта (например, заголовок версии оболочки и сообщение «connect to ...»).
Можете ли вы вставить выходные данные из manogshell здесь? –