Docker:安装 MongoDB 的详细指南

请关注微信公众号:拾荒的小海螺
博客地址:http://lsk-ww.cn/

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 应用中进行基本的数据库操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/439940.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka发送消费核心参数与设计原理详解

核心参数详解&#xff1a; 发送端参数&#xff1a; 发送方式&#xff1a;默认值一般都是1: 重试参数 &#xff1a; 批量参数&#xff1a; 消费端参数&#xff1a; 自动提交参数&#xff1a; 如果是false&#xff0c;就是说消费完后不提交位移。也就是说比如之前消费的1-5.…

Qt教程(002):Qt项目创建于框架介绍

二、创建Qt项目 2.1 创建项目 【1、New Project】 【2、选择Qt Widgets Application】 【3、设置项目名称和保存路径】 注意&#xff0c;项目名称和路径不要带中文。 【4、选择QWidget】 带菜单栏的窗口QMainWindow空白窗口QWidget对话框窗口QDialog 【5、编译】 2.2 项目框…

前端编程艺术(4)---JavaScript进阶(vue前置知识)

目录 1.变量和常量 2.模版字符串 3.对象 4.解构赋值 1.数组的解构 2.对象的解构 5.箭头函数 6.数组和对象的方法 7.扩展运算符 8.Web存储 9.Promise 10.AsyncAwait 11.模块化 1.变量和常量 JavaScript 中的变量和常量是用于存储数据的标识符。变量可以被重新赋值&am…

基于阻塞队列及环形队列的生产消费模型

目录 条件变量函数 等待条件满足 阻塞队列 升级版 信号量 POSIX信号量 环形队列 条件变量函数 等待条件满足 int pthread_cond_wait(pthread_cond_t *restrict cond,pthread_mutex_t *restrict mutex); 参数&#xff1a; cond&#xff1a;要在这个条件变量上等待 mutex…

windows下,在vscode中使用cuda进行c++编程

安装cuda CUDA Toolkit Downloads | NVIDIA Developer 这里网上教程多的是&#xff0c;在这个网址下载安装即可 我这台电脑因为重装过&#xff0c;所以省去了安装步骤&#xff0c;但是要重新配置环境变量。我重新找到了重装之前的CUDA位置(关注这个bin文件夹所在的目录) 在…

微信第三方开放平台接入本地消息事件接口报错问题java.security.InvalidKeyException: Illegal key size

先看报错&#xff1a; java.security.InvalidKeyException: Illegal key sizeat javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039)at javax.crypto.Cipher.implInit(Cipher.java:805)at javax.crypto.Cipher.chooseProvider(Cipher.java:864)at javax.crypto.Cipher.in…

九、3 串口发送+printf函数移植+打印汉字

1、接线图 TX与RX交叉连接&#xff0c;TXD接STM32的PA10&#xff0c;RXD接STM32的PA9 VCC与3.3V用跳线帽连接 2、函数介绍 3、代码部分 &#xff08;1&#xff09;发送字节的函数&#xff08;Byte&#xff09; 可直接发送十六进制数 如0x41&#xff0c;也可直接发送字符 如A …

【重学 MySQL】五十六、位类型

【重学 MySQL】五十六、位类型 定义赋值与使用注意事项应用场景 在MySQL数据库中&#xff0c;位类型&#xff08;BIT类型&#xff09;是一种用于存储位字段值的数据类型。 定义 BIT(n)表示n个位字段值&#xff0c;其中n是一个范围从1到64的整数。这意味着你可以存储从1位到64…

【AIGC】AI时代的数据安全:使用ChatGPT时的自查要点

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;法律法规背景中华人民共和国保守秘密法中华人民共和国网络安全法中华人民共和国个人信息保护法遵守法律法规的重要性 &#x1f4af;ChatGPT的数据使用特点ChatGPT数据安全…

YOLOv11 vs YOLOv8:谁才是真正的AI检测之王?

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Js逆向分析+Python爬虫结合

JS逆向分析Python爬虫结合 特别声明&#x1f4e2;&#xff1a;本教程只用于教学&#xff0c;大家在使用爬虫过程中需要遵守相关法律法规&#xff0c;否则后果自负&#xff01;&#xff01;&#xff01; 完整代码地址Github&#xff1a;https://github.com/ziyifast/ziyifast-co…

28 Vue3之搭建公司级项目规范

可以看到保存的时候ref这行被提到了最前面的一行 要求内置库放在组件的前面称为auto fix&#xff0c;数组new arry改成了字面量&#xff0c;这就是我们配置的规范 js规范使用的是airbnb规范模块使用的是antfu 组合prettier&eslint airbnb规范&#xff1a; https://github…

重磅来袭!CMSIS-DAP 脱机烧录器 EasyFlasher 发布~

重磅来袭&#xff01;CMSIS-DAP 脱机烧录器 EasyFlasher 发布~ 目录 重磅来袭&#xff01;CMSIS-DAP 脱机烧录器 EasyFlasher 发布~相关文章1、前言1、产品特点2、功能说明3、支持芯片4、关于烧录5、写在最后 某宝店铺&#xff1a;觉皇工作室 购买链接&#xff1a;https://item…

缓存数据减轻服务器压力

问题:不是所有的数据都需要请求后端的 不是所有的数据都需要请求后端的,有些数据是重复的、可以复用的解决方案:缓存 实现思路:每一个分类为一个key,一个可以下面可以有很多菜品 前端是按照分类查询的,所以我们需要通过分类来缓存缓存代码 /*** 根据分类id查询菜品** @pa…

Linux中的进程间通信之共享内存

共享内存 共享内存示意图 共享内存数据结构 struct shmid_ds {struct ipc_perm shm_perm; /* operation perms */int shm_segsz; /* size of segment (bytes) */__kernel_time_t shm_atime; /* last attach time */__kernel_time_t shm_dtime; /* last detach time */__kerne…

[Linux] Linux 初识进程地址空间 (进程地址空间第一弹)

标题&#xff1a;[Linux] Linux初识进程地址空间 个人主页水墨不写bug &#xff08;图片来源于AI&#xff09; 目录 一、什么是进程地址空间 二、为什么父子进程相同地址的变量的值不同 三、初识虚拟地址、页表 一、什么是进程地址空间 其实&#xff0c;在很久之前&#xf…

【S32K3 RTD MCAL 篇1】 K344 KEY 控制 EMIOS PWM

【S32K3 RTD MCAL 篇1】 K344 KEY 控制 EMIOS PWM 一&#xff0c;文档简介二&#xff0c; 功能实现2.1 软硬件平台2.2 软件控制流程2.3 资源分配概览2.4 EB 配置2.4.1 Dio module2.4.2 Icu module2.4.4 Mcu module2.4.5 Platform module2.4.6 Port module2.4.7 Pwm module 2.5 …

STM32+ADC+扫描模式

1 ADC简介 1 ADC(模拟到数字量的桥梁) 2 DAC(数字量到模拟的桥梁)&#xff0c;例如&#xff1a;PWM&#xff08;只有完全导通和断开的状态&#xff0c;无功率损耗的状态&#xff09; DAC主要用于波形生成&#xff08;信号发生器和音频解码器&#xff09; 3 模拟看门狗自动监…

Oracle架构之数据库备份和RAC介绍

文章目录 1 数据库备份1.1 数据库备份分类1.1.1 逻辑备份与物理备份1.1.2 完全备份/差异备份/增量备份 1.2 Oracle 逻辑备份1.2.1 EXP/IMP1.2.1.1 EXP导出1.2.1.2 EXP关键字说明1.2.1.3 导入1.2.1.4 IMP关键字说明 1.2.2 EXPDP/IMPDP1.2.2.1 数据泵介绍1.2.2.2 数据泵的使用 1.…