将mongodb集合的每个文档导出为单独的json文件

时间:2017-05-16 07:28:24

标签: mongodb export

我有一个名为“CRM' CRM”的mongoddb数据库。并且有一个集合"用户"。

有超过50,000名用户加入"用户"集合。

我想从"用户"中导出所有用户文档收集以分离.json文件。

我运行了以下命令,它将所有用户作为json对象数组放入单个(users.json)json文件中。

mongoexport -d CRM -c users -o users.json --jsonArray

但是,我想为每个用户提供.JSON文件。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

jq帮助我完成了这项工作。

Mongo的输出文件不是有效的JSON文件,而是各自有效的JSON内容的各行。我使用的步骤是:

  • 遍历每一行,
  • 解析它以获取ID(您可以在此处使用自己的字段)
  • 使用ID作为文件名
  • 将行/文档写入文件

这是我最终使用的bash代码:

# Make newlines the only separator.
IFS=$'\n'
# Disable globbing.
set -f          

# Iterate through the export file
for doc in $(cat < export.txt); do
  # $doc is a valid JSON document. Parse it to get the filename
  # based on the ID.
  export filename=`echo $doc | jq -r '._id'`.json

  # Write document to file.
  echo "Writing $filename"
  echo $doc > $filename
done

我从这些Stack Exchange答案中了解到这一点:

我不确定这对50,000条记录的效果如何。