【问题标题】:Dump Mongo Collection into JSON format将 Mongo 集合转储为 JSON 格式
【发布时间】:2012-01-24 17:28:14
【问题描述】:

有没有办法将 mongo 集合转储为 json 格式?在 shell 上或使用 java 驱动程序。我正在寻找性能最佳的驱动程序。

【问题讨论】:

  • mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase admin 可以像这样指定hostportusernamepassword,默认认证数据库为admin

标签: json mongodb dump


【解决方案1】:

Mongo 包含一个 mongoexport 实用程序(see docs),它可以转储集合。此实用程序使用本机 libmongoclient,可能是最快的方法。

mongoexport -d <database> -c <collection_name>

也很有帮助:

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

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

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

【讨论】:

  • 使用 -d 标志指定要使用的数据库。
  • 如果你想要漂亮的打印 JSON(例如在开发过程中检查一个集合)使用 --pretty 标志:mongoexport -d mydatabase -c mycollection --pretty
  • 如果 Mongo 位于不同的主机上,这里有一个来自 Mongo 文档mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json的示例
  • 似乎 --pretty 从 2.6.10 版本开始消失。
  • 我猜这个方法以 Mongodb 扩展 JSON 格式导出。例如,日期类似于 ISODATE("2021-12-....")。我在使用 Apache Drill 解析这种格式时遇到了问题。我不知道你是否可以覆盖导出到众所周知的 JSON 中的输出。
【解决方案2】:

使用 mongoexport/mongoimport 转储/恢复集合:

导出 JSON 文件

mongoexport --db &lt;database-name&gt; --collection &lt;collection-name&gt; --out output.json

导入 JSON 文件

mongoimport --db &lt;database-name&gt; --collection &lt;collection-name&gt; --file input.json

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

另外,http://bsonspec.org/

BSON 旨在快速编码和解码。例如, 整数存储为 32(或 64)位整数,因此它们不需要 被解析为文本。这比 JSON 使用更多的空间 整数,但解析速度要快得多。

除了紧凑之外,BSON 还增加了额外的数据类型 在 JSON 中不可用,尤其是 BinData 和 Date 数据类型。

【讨论】:

  • 有没有什么“丰富的 BSON 数据”无法在 mongoexport/mongoimport 往返中存活的例子?
  • 它增加了对 JSON 中不支持的数据类型(如日期和二进制)的支持。此外,编码和解码速度更快bsonspec.org
【解决方案3】:

这是我的命令供参考:

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

在 Windows 7 (MongoDB 3.4) 上,必须将 cmd 移动到 mongod.exemongo.exe 文件所在的位置 => C:\MongoDB\Server\3.4\bin 否则它不会工作,说它不识别 mongoexport 命令。

【讨论】:

  • 有谁知道一个格式化程序,它将普通的 json 格式化为 MongoDB 在导入时期望的愚蠢的“单行无逗号”格式?
【解决方案4】:

来自 Mongo 文档:

mongoexport 实用程序获取一个集合并导出为 JSON 或 CSV。您可以为查询指定一个过滤器,或一个要输出的字段列表

在此处阅读更多信息:http://www.mongodb.org/display/DOCS/mongoexport

【讨论】:

    【解决方案5】:

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

    mongodump -d {DB_NAME}   -o /tmp 
    

    它将jsonbson扩展名中的所有集合数据生成到/tmp/{DB_NAME}目录中

    【讨论】:

    • 事实上它仍在转储 bson 和 metadata.bson :-(
    • 这个答案不正确。 mongodumpBSON 格式输出数据。其他答案正确地将mongoexport 称为正确的工具。
    • 这对我有用,它将所有集合输出到包含 bson 和 json 文件的 tmp 文件夹中。我用过 mongodump -d {dbname} -o tmp
    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    相关资源
    最近更新 更多