如何导入从parse.com导出的json文件到mongodb?

时间:2014-07-24 08:29:09

标签: mongodb parse-platform

我从parse.com导出了我们的集合,它们是一堆json文件,范围从几百兆到几千兆字节。 我如何将它们导入本地mongo数据库?

我试过了

mongoimport -d dbname -c collectionname --file file.json --jsonArray

但这没有用,因为我收到一个错误,说jsonArray太大了。

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:7)

这里的两个答案都不正确,因为mongoimport处理这个用例就好了。 MongoDB对于可以将多少数据加载到数据库中没有限制(除了您自己的计算机之外)。

MongoDB确实将文档大小限制为16mb但是Parse平台将文档大小限制为128kb,因此即使是最大的Parse文档(对象)也不可能超过MongoDB的16mb约束。

现在,要将数据从Parse导出到MongoDB中(我已经通过多GB导出成功完成了此操作)我可以通过删除Parse的封闭--jsonArray来使用result: { }选项导出工具放置JSON对象。我还在文件名之前放了所有选项:

mongoimport -d dbname -c collectionname --jsonArray file.json`

如果要处理大量集合,可以使用以下命令轻松地使用jq中的{{3}}去除封闭结果对象:

jq .results <collectionFromParse.json>

答案 1 :(得分:0)

我认为问题是jsonArray总共限制在16mb。

您仍然可以使用mongoimport但是您需要确保每个文档都在一行上,并且结果键已被删除。

您可以使用sed执行此操作并将结果流式传输到mongoimport。

答案 2 :(得分:0)

归功于@Tyler,但作为一个自我记录条目,如果你想在一台机器上复制一个Parse数据集以便与Parse-Server一起使用,你还需要映射Parse&#39; s {{1索引到Mongo的_id索引。有很多方法;我只是将它通过sed传输,如下所示:

# brew install jq # (if on a Mac)
sed -e 's/\"objectId\":/\"_id\":/g' <collection.json> \
    | jq .results | mongoimport -d <DatabaseName>

答案 3 :(得分:-1)

--jsonArray选项将导入限制为16MB,并期望在一个json数组中导入多个MongoDB文档。通常,MongoDB中的文档大小限制为16MB。您必须修改json文件并设计架构,以便每个文档都是&lt; 16MB。