我有一个大约有的MongodDB集合。 3M文件。但是我无法将其导出为JSON,因为一个或多个文档具有非json兼容字段。这对于MongodDB来说很好,因为文档存储为BSON,但这不适用于我的用例。
我没想到我的文档包含非JSON兼容数据。如何查找不包含JSON信息的文档?
答案 0 :(得分:0)
您可以使用以下命令运行脚本:
Collection.forEach(function(item) {
try {
JSON.parse(item);
}
catch(err) {
db.NoJsonObject.save(item);}
}
});
答案 1 :(得分:0)
您可能正在寻找mongoexport工具。
你真的想要"修复"您的数据还是只是想用您可以使用任何旧JSON阅读器阅读的方式表示数据?
你可以使用--jsonArray开关简单地将一个大的JSON文件作为输出,但在那里要非常小心。你的读者在作为内部代表向你提供之前,会尝试阅读所有300万个文档。
如果没有这个开关,你每行只能获得一个json文档,你可以做这样的事情来减少所需的内存。
while (read_line){
load_json(line)
//do something with memory
free(json)
}
https://docs.mongodb.com/manual/reference/program/mongoexport/
mongoexport --db test --collection traffic --out traffic.json
适当的标志会将文件输出到严格的JSON表示,可由任何可导入JSON的消息使用。