将Mongo Collection转储为JSON格式


119

有什么办法可以将mongo集合转储为json格式吗?无论是在外壳上还是使用Java驱动程序,我都在寻找性能最好的那个。


mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase admin您可以指定hostportusernamepassword这样,默认认证数据库admin
马克斯·彭

Answers:


177

Mongo包含可转储集合的mongoexport实用程序(请参阅文档)。该实用程序使用本机libmongoclient,可能是最快的方法。

mongoexport -d <database> -c <collection_name>

也有帮助:

-o:将输出写入文件,否则使用标准输出(docs

--jsonArray:生成一个有效的json文档,而不是每行一个json对象(docs

--pretty:输出格式化的json(docs


8
使用-d标志指定要使用的数据库。
Reimund

8
如果要打印漂亮的JSON(例如,在开发过程中检查集合),请使用--pretty标志:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa

6
如果Mongo位于不同的主机上,那么这是Mongo文档中的一个示例 mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
什么会很酷

--pretty2.6.10版本开始似乎已经消失了。
icedwater

115

使用mongoexport / mongoimport转储/还原集合:

导出JSON文件

mongoexport --db <database-name> --collection <collection-name> --out output.json

导入JSON文件

mongoimport --db <database-name> --collection <collection-name> --file input.json

警告, mongoimport并且mongoexport不能可靠地保留所有丰富的BSON数据类型,因为JSON只能表示BSON支持的类型的子集。结果,使用这些工具导出或导入的数据可能会失去某些保真度。

另外,http://bsonspec.org/

BSON旨在快速编码和解码。例如,整数存储为32(或64)位整数,因此不需要在文本之间进行解析。对于小整数,此方​​法比JSON使用更多的空间,但解析速度要快得多。

除了紧凑之外,BSON还添加了JSON中不可用的其他数据类型,特别是BinData和Date数据类型。


1
是否有什么榜样“丰富的BSON数据”不会生存mongoexport/ mongoimport往返?
andrewdotn

1
它增加了对JSON中不支持的数据类型(如日期和二进制)的支持。而且,编码和解码的速度更快bsonspec.org
Priyanshu Chauhan

5

这是我的命令供参考:

mongoexport --db AppDB --collection files --pretty --out output.json

在Windows 7(MongoDB的3.4),一个具有对CMD移动到的地方mongod.exemongo.exe文件所在=> C:\MongoDB\Server\3.4\bin否则它不会工作,说这不确实recongnize mongoexport命令。


有谁知道格式化程序,它将格式化普通的json到导入时MongoDB期望的愚蠢的“单行无逗号”格式?
conor909


-2

如果要转储所有集合,请运行以下命令:

mongodump -d {DB_NAME}   -o /tmp 

它将在目录中生成所有集合数据json并将其bson扩展到/tmp/{DB_NAME}目录中


事实上,它仍在转储bson和metas.bson :-(
Prasad

9
这个答案是不正确的。mongodumpBSON格式输出数据。其他答案正确地称为mongoexport正确的工具。
Christian Dechery

这对我有用,它将所有集合输出到包含bson和json文件的tmp文件夹中。我使用了mongodump -d {dbname} -o tmp
shyamzzp
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.