当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在mongoshell中将Mongo查询输出打印到文件》经验,为你挑选了4个好方法。

和Mongo一起2天,我有一个SQL背景所以请耐心等待.与mysql一样,在MySQL命令行中将查询结果输出到机器上的文件非常方便.我试图理解如何在shell中做同样的事情

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

mongo localhost:27017/dbname --eval "printjson(db.collectionName.findOne())" >> sample.json

上面的方法很好,但它需要我退出mongo shell或打开一个新的终端选项卡来执行此命令.如果我可以在shell内部完成此操作,那将非常方便.

PS:问题是我在SO上发布的问题的一个分支



1> Roberto..:

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

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

$ 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

然后你会得到一个包含这个内容的文件:

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输出,可以使用类似于的命令:

tail -n +3 file.txt | egrep -v "^>|^bye" > output.json

然后你会得到:

{ "this" : "is a test" }
{ "this" : "is another test" }



2> Rondo..:

如果使用script-file,db address和--quiet参数调用shell,则可以将输出(例如print())重定向到文件:

mongo localhost/mydatabase --quiet myScriptFile.js > output 



3> Jyotman Sing..:

我们可以这样做 -

mongo db_name --quiet --eval 'DBQuery.shellBatchSize = 2000; db.users.find({}).limit(2000)' > users.json

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



4> SergO..:
结合几个条件:

写JS文件蒙戈查询,并从终端发送

切换/编程的方式定义一个数据库

输出所有找到的记录

切断初始输出线

将输出保存到JSON文件

myScriptFile.js

// Switch current database to "mydatabase"
db = db.getSiblingDB('mydatabase');

// The mark for cutting initial output off
print("CUT_TO_HERE");

// Main output
// "toArray()" method allows to get all records
printjson( db.getCollection('jobs').find().toArray() );

从终端发送查询

-zsed允许将输出视为单个多行字符串

$> mongo localhost --quiet myScriptFile.js | sed -z 's/^.*CUT_TO_HERE\n//' > output.json

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有