我从parse.com导出了我们的集合,它们是一堆json文件,范围从几百兆到几千兆字节。 我如何将它们导入本地mongo数据库?
我试过了
mongoimport -d dbname -c collectionname --file file.json --jsonArray
但这没有用,因为我收到一个错误,说jsonArray太大了。
任何帮助都将不胜感激。
答案 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。