MongoDB 简介

MongoDB 是一个基于文档的 NoSQL 数据库,使用类似 JSON 的 BSON 格式存储数据。与传统的关系型数据库不同,MongoDB 提供了更灵活的数据模型,支持动态模式和复杂查询,适合处理大规模数据和高并发场景。

在本教程中,我们将使用 Docker 快速部署 MongoDB,并载入官方提供的测试数据集,以便于进行开发和测试。

MongoDB Docker 启动

  • 不太推荐的方式是直接使用 docker run 命令启动 MongoDB 容器,不便于管理,并且配置会在 Shell 历史记录中有安全隐患:

    cd 项目目录
    mkdir -p ./mydata/mongodb_test                                                           
    docker run -d \
    -p 127.0.0.1:27017:27017 \
    --name mongodb_test \
    -v ./mydata/mongodb_test:/data/db \
    -e MONGO_INITDB_ROOT_USERNAME=admin \
    -e MONGO_INITDB_ROOT_PASSWORD='密码' \
    mongo:latest
    
  • 推荐的方式是使用 docker compose 来管理 MongoDB 容器,方便配置和扩展。首先,创建一个 docker-compose.yml 文件:

    1. 创建 docker-compose.yml 文件

      services:
        mongodb_test:
            image: mongo:latest
            container_name: mongodb_test
            restart: unless-stopped
            environment:
              MONGO_INITDB_ROOT_USERNAME: admin
              MONGO_INITDB_ROOT_PASSWORD: 密码
            ports:
            - "127.0.0.1:27017:27017"
            volumes:
            - ./mydata/mongodb_test:/data/db
      
    2. 启动 MongoDB 服务: docker-compose up -d

载入官方测试数据

  1. 下载官方测试数据集:

    curl  https://atlas-education.s3.amazonaws.com/sampledata.archive -o sampledata.archive
    
  2. 复制数据集到 MongoDB 容器中:

    docker cp sampledata.archive mongodb_test:/tmp/
    
  3. 使用 MongoDB 容器内的 mongorestore 命令导入数据:

    docker exec -it mongodb_test mongorestore --username admin --password '密码' --authenticationDatabase admin --archive=/tmp/sampledata.archive
    
  4. 使用 MongoDB 容器内的 mongosh 查看数据:

    docker exec -it mongodb_test mongosh -u admin -p '密码' --authenticationDatabase admin
    
    # 进入 mongosh 环境后
    
    test> show dbs
    

如此,便完成了 MongoDB 的快速部署和数据载入。你可以在 mongodb_test 容器中查看和操作导入的数据。