暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker:安装 MongoDB 的详细指南

拾荒的小海螺 2024-07-31
615

1、简述

MongoDB 是一个流行的 NoSQL 数据库,可以在 Docker 容器中轻松安装和运行。本文将介绍如何在 Docker 中安装 MongoDB,并展示如何在 Java 应用中使用 MongoDB。


2、安装

2.1 拉取 MongoDB 镜像

打开终端,输入以下命令来拉取 MongoDB 的官方 Docker 镜像:

    docker pull mongo:latest


    挂载文件目录:

      mkdir -p data/mongo/config
      mkdir -p data/mongo/data
      mkdir -p data/mongo/logs
      touch data/mongo/config/mongod.conf
      chmod 777 data/mongo


      使用 vi 或 vim 编辑器打开mongod.conf文件:

        vim data/mongo/config/mongod.conf


        配置文件添加以下内容:

          # 数据库存储路径
          dbpath=/data/mongo/data

          # 日志文件路径
          logpath=/data/mongo/logs/mongod.log

          # 监听的端口
          port=27017

          # 允许所有的 IP 地址连接
          bind_ip=0.0.0.0

          # 启用日志记录
          journal=true

          # 是否后台运行
          fork=true

          # 启用身份验证
          #auth=true


          2.2 运行 MongoDB 容器

          拉取完镜像后,可以使用以下命令启动一个 MongoDB 容器:

            docker run -dit --name mongo \
            -p 17017:27017 \
            -v data/mongo/config/mongod.conf:/etc/mongod.conf \
            -v data/mongo/data:/data/db \
            -v data/mongo/logs:/var/log/mongodb \
            -e MONGO_INITDB_ROOT_USERNAME=admin \
            -e MONGO_INITDB_ROOT_PASSWORD=admin \
            --restart=always \
            mongo:latest

            以上命令会在后台运行一个名为 mongo  的 MongoDB 容器。


            3、常用指令

            在 MongoDB 中,常见的使用指令包括数据库管理、集合操作、文档操作、索引管理等。以下是一些常见的 MongoDB 使用指令:

            3.1 集合操作指令

            显示当前数据库中的所有集合

              show collections


              创建集合

                db.createCollection("mycollection")


                删除集合

                  db.mycollection.drop()


                  3.2 文档操作指令

                  插入文档

                    db.mycollection.insertOne({name: "Alice", age: 24, city: "New York"})


                    插入多个文档

                      db.mycollection.insertMany([
                      {name: "Bob", age: 27, city: "San Francisco"},
                      {name: "Charlie", age: 30, city: "Chicago"}
                      ])


                      查询所有文档

                        db.mycollection.find()


                        查询单个文档

                          db.mycollection.findOne({name: "Alice"})


                          更新文档

                            db.mycollection.updateOne({name: "Alice"}, {$set: {age: 25}})


                            更新多个文档

                              db.mycollection.updateMany({city: "New York"}, {$set: {city: "NYC"}})


                              替换文档

                                db.mycollection.replaceOne({name: "Alice"}, {name: "Alice", age: 26, city: "NYC"})


                                删除单个文档

                                  db.mycollection.deleteOne({name: "Alice"})


                                  删除多个文档

                                    db.mycollection.deleteMany({city: "NYC"})


                                    3.3 索引管理指令

                                    创建索引

                                      db.mycollection.createIndex({name: 1})


                                      显示所有索引

                                        db.mycollection.getIndexes()


                                        删除索引

                                          db.mycollection.dropIndex("name_1")


                                          3.4 其他常用指令

                                          统计集合中文档数量

                                            db.mycollection.countDocuments()


                                            统计集合中文档数量(满足条件)

                                              db.mycollection.countDocuments({city: "San Francisco"})


                                              聚合操作

                                                db.mycollection.aggregate([
                                                {$match: {city: "San Francisco"}},
                                                {$group: {_id: "$city", total: {$sum: 1}}}
                                                ])

                                                以上列出的指令涵盖了 MongoDB 中常见的数据库管理、集合操作、文档操作和索引管理。这些指令是 MongoDB 开发和管理中最常用的,掌握这些指令可以有效地管理和操作 MongoDB 数据库。希望本文对你在使用 MongoDB 时提供了实用的参考。


                                                4、样例

                                                在 Java 应用中使用 MongoDB,通常使用官方的 MongoDB Java 驱动程序。以下是一个简单的 Java 示例,展示如何连接到 MongoDB 并进行基本的 CRUD 操作。

                                                4.1 引入 MongoDB Java 驱动

                                                在你的项目中添加 MongoDB Java 驱动依赖。使用 Maven 构建工具时,可以在 pom.xml 文件中添加以下依赖:

                                                  <dependency>
                                                  <groupId>org.mongodb</groupId>
                                                  <artifactId>mongodb-driver-sync</artifactId>
                                                  <version>4.4.0</version>
                                                  </dependency>


                                                  4.2 连接到 MongoDB

                                                  以下是一个 Java 示例代码,展示如何连接到 MongoDB 并进行基本的数据库操作:

                                                    import com.mongodb.client.MongoClients;
                                                    import com.mongodb.client.MongoClient;
                                                    import com.mongodb.client.MongoDatabase;
                                                    import com.mongodb.client.MongoCollection;
                                                    import org.bson.Document;


                                                    public class MongoDBExample {
                                                    public static void main(String[] args) {
                                                    // 连接到 MongoDB 服务
                                                    MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");


                                                    // 连接到数据库
                                                    MongoDatabase database = mongoClient.getDatabase("mydb");


                                                    // 获取集合
                                                    MongoCollection<Document> collection = database.getCollection("test");


                                                    // 创建文档
                                                    Document doc = new Document("name", "Alice")
                                                    .append("age", 24)
                                                    .append("city", "New York");


                                                    // 插入文档
                                                    collection.insertOne(doc);


                                                    // 查询文档
                                                    Document myDoc = collection.find().first();
                                                    System.out.println(myDoc.toJson());


                                                    // 更新文档
                                                    collection.updateOne(new Document("name", "Alice"), new Document("$set", new Document("age", 25)));


                                                    // 删除文档
                                                    collection.deleteOne(new Document("name", "Alice"));


                                                    // 关闭客户端
                                                    mongoClient.close();
                                                    }
                                                    }


                                                    5、结论

                                                    通过 Docker 安装和运行 MongoDB 非常简单,只需要几个命令即可完成。然后,在 Java 应用中使用 MongoDB 也非常方便,通过 MongoDB Java 驱动程序,可以轻松实现数据库的连接和操作。希望本文对你在 Docker 环境中使用 MongoDB 提供了帮助,并展示了如何在 Java 应用中进行基本的数据库操作。




                                                    文章转载自拾荒的小海螺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                    评论