Mongodb DB - 查找具有非Json兼容数据的文档

时间:2016-07-18 14:17:50

标签: json mongodb bson

我有一个大约有的MongodDB集合。 3M文件。但是我无法将其导出为JSON,因为一个或多个文档具有非json兼容字段。这对于MongodDB来说很好,因为文档存储为BSON,但这不适用于我的用例。

我没想到我的文档包含非JSON兼容数据。如何查找不包含JSON信息的文档?

2 个答案:

答案 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的消息使用。