我使用bsondump将一个大文件(69GB)导出到json。我希望得到一个有效的json数组,但对象并没有分开。
可以选择使用mongoexport创建json数组。但是这个bson文件是从另一台机器导出的,出于大小和性能考虑,我不想在使用mongoexport从db导出它之前导入这个大文件。
为了提供更多背景信息,我需要将基于bson的mongodb导出转换为json:
1) 我试图使用mongoexport直接从mongodb导出json。就像这样:
mongoexport -d mydb -c notifications --jsonArray -o lv.json
2) mongodump工作得更快,可能是因为它不必转换为json,只需转储内部数据。它也显示了进步,所以我知道它什么时候会结束。所以这是我唯一可以在生产服务器上运行的东西。
mongodump --db mydb
编辑2
导出到.bson后,可以使用bsondump将.bson文件转换为.json文件:
bsondump mydata.bson > mydata.json
这里要明确一点:bsondump没有像mongoexport那样的--jsonArray选项。因此,它无法导出有效的json数组,而是将multpiple根对象转储到一个文件中。结果是一个无效的文档,必须对其进行预解析。
/编辑2
3) 我基本上有两种选择:将bson转储导入本地db,并使用mongoexport-jsonArray将其导出到适当的json文件。或者找到一种方法来解决bsondump本身无法导出到正确的json数组文件的问题。第三种选择是在我的工具中实现bson解析器,这是我并不真正感兴趣的。。。
不
我的工具有问题。我的工具是用C++编写的,专门用于大型数据流。我将rapidjson与SAX解析器一起使用,并通过自己的类似SQL的计算器过滤记录。内存使用率在<通常是10MB,因为我使用SAX解析器而不是DOM。