Mongodb 如何将mongo命令结果放入平面文件

Mongodb 如何将mongo命令结果放入平面文件,mongodb,mongodb-java,mongodb-query,Mongodb,Mongodb Java,Mongodb Query,如何将MongoDB命令的结果导出到平面文件 例如,如果我要将db.collectionname.find()放入一个平面文件中 我尝试了db.collectionname.find()>>“test.txt”似乎不起作用。我不知道直接从mongo shell执行此操作的方法,但您可以让mongoexport执行查询并将结果发送到带有-q和-o选项的文件: mongoexport -h mongo.dev.priv -d models -c profiles -q '{ $query : { _

如何将MongoDB命令的结果导出到平面文件

例如,如果我要将
db.collectionname.find()
放入一个平面文件中


我尝试了
db.collectionname.find()>>“test.txt”
似乎不起作用。

我不知道直接从mongo shell执行此操作的方法,但您可以让mongoexport执行查询并将结果发送到带有-q和-o选项的文件:

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

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

您可以从命令行尝试以下操作

mongo 127.0.0.1/db --eval "var c = db.collection.find(); while(c.hasNext()) {printjson(c.next())}" >> test.txt
假设您有一个名为“db”的数据库在localhost上运行,并且有一个名为“collection”的集合,这将把所有记录导出到一个名为test.txt的文件中

如果要执行更长的脚本,还可以创建script.js文件 只要使用

mongo 127.0.0.1/db script.js >> test.txt
我希望这有助于使用它

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

在Peshkira的回答中,由于缺少了需要成为实际db的db,下面是shell中单行程序的一般语法(假设没有密码):

mongo:--eval“var x=…;while(x.hasNext()){printjson(x.next())}”>>out.txt

我用Mongo 3+在mac和Google cloud Ubuntu15上测试了它。

mongoexport--db db_name--collection collection_name--csv--out file_name.csv--f field1,field2,field3

试试这个--返回一个包含查询数据的json文件,您可以更改
.txt
和其他

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
mongoexport --db products --collection clicks --query '{"createdInt":{$gte:20190101}, "clientId":"123", "country":"ES"}' --out clicks-2019.json

安装MongoDB Compass,然后它将有一个工具将查询结果导出到Json/CSV文件。

感谢您的帮助。我将对此进行讨论,看看我是否能让它发挥作用。请尝试以下操作:
mongoexport--db your moments--collection profile--out test.txt
如何为远程mongo db执行此操作?我尝试了
mongo blah.mongolab.com:33478/blah-u user-p pass--eval“my query”>>dump.txt
但它给了我
JavaScript执行失败的机会:SyntaxError:Unexpected token unliked
。这是正确的,我最初使用了这个答案,但在执行$not查询并将引用字段发送到查询时遇到了问题。没有$not,我可以逃避报价,但有$not,我无法让它工作。在这种情况下,在整个评估中使用单引号而不是双引号可能会更好。效果很好!请记住在查询中使用单引号或替换任何双引号。包括对您的答案的一些解释将有助于其他遇到此解决方案的人。我认为第二个答案应该是命令键“db”,而不是;比如:mongo:--eval“var x=db..;while(x.hasNext()){printjson(x.next())}”>>out.txt我觉得这是一个比当前选择的更好的答案。
mongoexport --db products --collection clicks --query '{"createdInt":{$gte:20190101}, "clientId":"123", "country":"ES"}' --out clicks-2019.json