2012-10-10 30 views

回答

58

你可以尝试在命令行

mongo 127.0.0.1/db --eval "var c = db.collection.find(); while(c.hasNext()) {printjson(c.next())}" >> test.txt 

以下假设你有一个名为“DB”在本地主机上运行的数据库和一个名为“收藏”,这将所有记录导出为一个名为test的文件集合。 TXT

如果您有要执行你也可以创建一个文件的script.js和 较长的脚本只是用

mongo 127.0.0.1/db script.js >> test.txt 

我希望这有助于

+1

显示我一个错误 - 失踪;声明之前(shell):1 – QVSJ

+0

你有拷贝粘贴这个吗? 如果是,请在查询中仔细检查数据库名称和集合名称。如果您只是自己输入,请仔细检查拼写。 您正在收到的错误意味着您拼错了某些内容... 适合我(仅测试一遍) – peshkira

+0

使用您的时刻您的时刻--eval“var c = db.profile.find(); while(c.hasNext()){printjson(c.next())}“>>”C:\ exp \ test.txt“其中your-moments是db名称,profile是集合名称。 – QVSJ

12

我所知,没有办法做到这一点直接从蒙戈外壳,但你可以得到mongoexport执行查询,并将结果发送到与-q和-o选项的文件:

mongoexport -h mongo.dev.priv -d models -c profiles -q '{ $query : { _id : "MRD461000" } }' -o MRD_Series1.json 

的以上命中查询模型数据库中的profiles集合,获取_id =“MRD641000”的JSON文档。适用于我。

+0

最简单的答案。 – Jim109

7

使用此

mongo db_name --username user --password password <query1.js>> result.txt 
1

已经错过了DB需要是在Peshkira的回答实际分贝,这里是在壳中的一个衬垫一般语法(假设没有密码):

mongo <host>:<db name> --eval "var x = <db name>.<collection name>.<query>; while(x.hasNext()) { printjson(x.next()) }" >> out.txt 

我在我的Mac和Google云Ubuntu 15上用Mongo 3+测试了它。

-1

mongoexport --db DB_NAME --collection COLLECTION_NAME --csv --out file_name.csv -f FIELD1,FIELD2,字段3

+1

包括解答您的答案将有助于其他人遇到此解决方案。 – Steven

0

mongoexport --host 127.0.0.1 --port 27017 --username youruser -p yourpass -d yourDatabaseName -c collectionName -type csv --fields field1,field2 -q'{“field1”:1495730914381}'--out report.csv