首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mongo shell中将mongo查询输出打印到文件中

在Mongo shell中将mongo查询输出打印到文件中
EN

Stack Overflow用户
提问于 2014-03-21 17:12:49
回答 7查看 142.4K关注 0票数 99

两天大的蒙戈,我有一个SQL背景,所以请原谅我。与mysql一样,在MySQL命令行中并将查询结果输出到机器上的文件非常方便。我正在努力理解如何在进入shell时对mongo.mengo做同样的事情。

通过在shell之外执行以下命令,我可以轻松地获得我想要的查询的输出:

代码语言:javascript
复制
mongo localhost:27017/dbname --eval "printjson(db.collectionName.findOne())" > sample.json

上面的方法很好,但是它要求我退出mongo,或者打开一个新的终端选项卡来执行这个命令。如果我能简单地做到这一点,同时仍然在shell中,这将是非常方便的。

P.S:这个问题是我在所以上发布的一个问题的一个分支

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-03-21 17:28:30

AFAIK,文件输出没有交互式选项,前面有一个与此相关的问题:将mongodb输出打印到文件

但是,如果使用tee命令调用shell,则可以记录所有shell会话:

代码语言:javascript
复制
$ mongo | tee file.txt
MongoDB shell version: 2.4.2
connecting to: test
> printjson({this: 'is a test'})
{ "this" : "is a test" }
> printjson({this: 'is another test'})
{ "this" : "is another test" }
> exit
bye

然后,您将得到一个包含以下内容的文件:

代码语言:javascript
复制
MongoDB shell version: 2.4.2
connecting to: test
> printjson({this: 'is a test'})
{ "this" : "is a test" }
> printjson({this: 'is another test'})
{ "this" : "is another test" }
> exit
bye

要删除所有命令并只保留json输出,可以使用类似于以下命令的命令:

代码语言:javascript
复制
tail -n +3 file.txt | egrep -v "^>|^bye" > output.json

然后你会得到:

代码语言:javascript
复制
{ "this" : "is a test" }
{ "this" : "is another test" }
票数 105
EN

Stack Overflow用户

发布于 2018-04-04 14:55:56

我们可以这样做-

代码语言:javascript
复制
mongo db_name --quiet --eval 'DBQuery.shellBatchSize = 2000; db.users.find({}).limit(2000).toArray()' > users.json

shellBatchSize参数用于确定允许mongo客户端打印多少行。它的默认值是20。

票数 52
EN

Stack Overflow用户

发布于 2014-12-23 02:04:09

如果使用脚本文件、db地址和--静默参数调用shell,则可以将输出(例如,print() )重定向到文件:

代码语言:javascript
复制
mongo localhost/mydatabase --quiet myScriptFile.js > output 
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22565231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档