我试图将大型数据集 JSON 文件导入 MongoDB,我的第一种方法是使用 MongoDB Compass,我的文件大小约为 7GB,但经过 30 分钟后仍然停留在 0%,如下图所示:

[Alt](https://res.cloudinary.com/practicaldev/image/fetch/s--gMuno5PV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/fkbaluqym0htu8ybh8no.png)

所以我使用了下一个方法,mongoimport,但我使用的是 MongoDB 和 docker,所以第一步我需要将我的巨大 JSON 文件复制到 MongoDB 容器:

docker cp users.json CONTAINER_NAME:/users.json

进入全屏模式 退出全屏模式

然后使用以下命令连接到我的 Mongodb 容器:

docker exec -it CONTAINER_NAME  bash

进入全屏模式 退出全屏模式

现在只需要使用 mongoimport 插入大文件:

mongoimport --db MY_DB --collection users --drop --jsonArray --batchSize 1 --file ./users.json

进入全屏模式 退出全屏模式

通过使用--batchSize 1选项,您将被保险巨大的 JSON 文件将被解析并以批量大小存储,以防止内存问题。

如果在导入期间您遇到 MongoDB 导入的killed错误,则可能需要通过将deploy.resources添加到 docker-compose 文件来增加容器的内存大小:

version: "3"
services:
  mongodb:
    image: mongo:3.6.15  
    deploy:
      resources:
        limits:
          memory: 4000M
        reservations:
          memory: 4000M  

进入全屏模式 退出全屏模式

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐