具体来说,我想将mongoDBfind()
的结果打印到文件中。JSON对象太大,因此我无法使用shell窗口大小查看整个对象。
shell提供了一些不错但隐藏的功能,因为它是一个交互式环境。
当你通过mongo命令. js从javascript文件运行命令时,你不会得到完全相同的行为。
有两种方法可以解决这个问题。
(1)假出shell,让它以为你在交互模式
$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF
或者
(2)使用Javascript将find()
的结果翻译成可打印的JSON
mongo dbname command.js > output.json
其中命令. js包含this(或其等效项):
printjson( db.collection.find().toArray() )
这将很好地打印结果数组,包括[]
-如果您不希望这样,您可以遍历数组和printjson()
每个元素。
顺便说一句,如果您只运行一个Javascript语句,您不必将其放入文件中,而是可以使用:
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json
由于您在终端上执行此操作,并且只想以理智的方式检查记录,因此可以使用如下技巧:
mongo | tee somefile
像往常一样使用会话-db.集合. find().漂亮()
或任何您需要做的事情,忽略长输出,然后退出。您的会话记录将在写入的文件ted
中。
请注意,由于mongoshell期望交互式会话,输出可能包含转义序列和其他垃圾。less
优雅地处理这些。
只需将您要运行的命令放入文件中,然后将其与库名一起传递给shell,并将输出重定向到文件。因此,如果您的查找命令在find. js
中,并且您的数据库是foo
,则如下所示:
./mongo foo find.js >> out.json