从JSON文件批量加载具有许多对象的MongoDB

Nig*_*olf 11 json couchdb bulkinsert mongodb

我想对MongoDB进行批量加载.我有大约200GB的文件包含我想加载的JSON对象,问题是我不能使用mongoimport工具,因为对象包含对象(即我需要使用--jsonArray aaram),限制为4MB.

在CouchDB中有Bulk Load API,我可以编写脚本并使用cURL发送POST请求来插入文档,没有大小限制......

MongoDB中有这样的东西吗?我知道有困,但我想知道这是否可以应付JSON嵌套数组插入..?

谢谢!

Nig*_*olf 2

好吧,基本上看来没有真正好的答案,除非我用 Java 或 Ruby 之类的东西编写自己的工具来传递对象(嗯努力)...但这真的很痛苦,所以我决定简单地将文件拆分为4MB 块...只是使用 split 编写了一个简单的 shell 脚本(请注意,由于限制,我必须多次拆分文件)。我使用带有 -l (行号)的 split 命令,因此每个文件中都有 x 行数。就我而言,每个 Json 对象约为 4kb,所以我只是猜测行大小。

对于想要执行此操作的任何人,请记住 split 只能生成 676 个文件 (26*26),因此您需要确保每个文件中有足够的行以避免丢失一半文件。无论如何,将所有这些放入一个好的旧 bash 脚本中并使用 mongo import 并让它运行过夜。IMO 中最简单的解决方案,无需剪切和混搭文件并在 Ruby/Java 或其他语言中解析 JSON。

这些脚本有点自定义,但如果有人想要它们,只需发表评论和恶意帖子即可。