MongoDB安装实战指南

MongoDB安装实战指南

一、MongoDB简介

1.1 什么是MongoDB

MongoDB是一个基于文档的NoSQL数据库,由C++语言编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。

1.2 核心特性

|--------|------------------------|
| 特性 | 说明 |
| 文档存储 | 使用BSON格式存储数据,支持嵌套文档和数组 |
| 灵活模式 | 无需预定义表结构,字段可以动态添加 |
| 高性能 | 支持索引、聚合查询、全文搜索 |
| 高可用性 | 支持副本集、自动故障转移 |
| 可扩展性 | 支持分片,水平扩展数据容量 |
| 丰富的查询 | 支持丰富的查询语言和聚合管道 |
| 原子操作 | 支持文档级别的原子操作 |

1.3 应用场景

• 内容管理系统(CMS)

• 社交网络应用

• 实时数据分析

• 物联网(IoT)数据存储

• 游戏开发

• 电商系统

• 日志管理

二、Windows系统安装

2.1 系统要求

|--------|-------------------------------------|
| 组件 | 要求 |
| 操作系统 | Windows 10/11, Windows Server 2016+ |
| 处理器 | x86_64架构 |
| 内存 | 至少4GB RAM(推荐8GB+) |
| 磁盘空间 | 至少5GB可用空间 |
| 网络 | 需要网络连接下载安装包 |

2.2 安装步骤

方法一:使用MSI安装包

  1. 访问MongoDB官网下载页面:https://www.mongodb.com/try/download/community

  2. 选择Windows平台,选择版本(推荐最新稳定版)

  3. 下载.msi安装包

  4. 双击运行安装程序

  5. 在安装向导中选择"Complete"完整安装

  6. 勾选"Install MongoDB as a Service"(作为Windows服务安装)

  7. 勾选"Install MongoDB Compass"(图形化管理工具)

  8. 设置数据目录(默认:C:\data\db)

  9. 设置日志目录(默认:C:\data\log)

  10. 点击"Install"开始安装

  11. 安装完成后点击"Finish"

方法二:使用ZIP压缩包

  1. 下载ZIP压缩包版本

  2. 解压到指定目录(如:C:\mongodb)

  3. 创建数据目录:mkdir C:\data\db

  4. 创建日志目录:mkdir C:\data\log

  5. 创建配置文件mongod.cfg

  6. 手动启动或配置为服务

2.3 配置文件

创建配置文件C:\Program Files\MongoDB\Server\7.0\bin\mongod.cfg:

网络配置

net:
port: 27017
bindIp: 127.0.0.1

存储配置

storage:
dbPath: C:\\data\\db
journal:
enabled: true

日志配置

systemLog:
destination: file
path: C:\\data\\log\\mongod.log
logAppend: true

安全配置

security:
authorization: enabled

2.4 环境变量配置

将MongoDB bin目录添加到系统PATH环境变量:

MongoDB bin目录路径

C:\Program Files\MongoDB\Server\7.0\bin

验证安装

mongod --version
mongo --version

三、Linux系统安装

3.1 Ubuntu/Debian安装

步骤1:导入公钥

wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add -

步骤2:添加MongoDB源

echo "deb arch=amd64,arm64 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

步骤3:更新包列表并安装

sudo apt-get update
sudo apt-get install -y mongodb-org

3.2 CentOS/RHEL安装

步骤1:创建仓库配置文件

sudo tee /etc/yum.repos.d/mongodb-org-7.0.repo << EOF

mongodb-org-7.0

name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\\$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
EOF

步骤2:安装MongoDB

sudo yum install -y mongodb-org

3.3 创建数据目录

创建数据目录

sudo mkdir -p /data/db

设置权限

sudo chown -R mongodb:mongodb /data/db

创建日志目录

sudo mkdir -p /var/log/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb

四、macOS系统安装

4.1 使用Homebrew安装

步骤1:安装Homebrew(如果未安装)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

步骤2:安装MongoDB

添加MongoDB Tap

brew tap mongodb/brew

安装MongoDB Community Edition

brew install mongodb-community

4.2 手动安装

下载MongoDB

curl -O https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-7.0.0.tgz

解压

tar -zxvf mongodb-macos-x86_64-7.0.0.tgz

移动到Applications

sudo mv mongodb-macos-x86_64-7.0.0 /usr/local/mongodb

创建符号链接

sudo ln -s /usr/local/mongodb/bin/mongo /usr/local/bin/mongo
sudo ln -s /usr/local/mongodb/bin/mongod /usr/local/bin/mongod

4.3 配置macOS服务

启动MongoDB服务

brew services start mongodb-community

停止MongoDB服务

brew services stop mongodb-community

重启MongoDB服务

brew services restart mongodb-community

五、Docker安装

5.1 拉取MongoDB镜像

拉取最新版本

docker pull mongo:latest

拉取指定版本

docker pull mongo:7.0

5.2 运行MongoDB容器

基本运行

docker run --name mongodb -d -p 27017:27017 mongo:7.0

挂载数据卷

docker run --name mongodb \
-d \
-p 27017:27017 \
-v mongodb_data:/data/db \
mongo:7.0

使用自定义配置

docker run --name mongodb \
-d \
-p 27017:27017 \
-v /path/to/mongod.conf:/etc/mongod.conf \
-v mongodb_data:/data/db \
mongo:7.0 \
mongod --config /etc/mongod.conf

5.3 Docker Compose配置

创建docker-compose.yml文件:

version: '3.8'

services:
mongodb:
image: mongo:7.0
container_name: mongodb
restart: always
ports:

  • "27017:27017"
    environment:
    MONGO_INITDB_ROOT_USERNAME: admin
    MONGO_INITDB_ROOT_PASSWORD: password123
    volumes:
  • mongodb_data:/data/db
  • ./mongod.conf:/etc/mongod.conf
    command: mongod --config /etc/mongod.conf

mongo-express:
image: mongo-express
container_name: mongo-express
restart: always
ports:

  • "8081:8081"
    environment:
    ME_CONFIG_MONGODB_URL: mongodb://admin:password123@mongodb:27017/
    ME_CONFIG_BASICAUTH_USERNAME: admin
    ME_CONFIG_BASICAUTH_PASSWORD: admin
    depends_on:
  • mongodb

volumes:
mongodb_data:

六、配置与启动

6.1 启动MongoDB

Windows(服务)

net start MongoDB

Windows(手动)

mongod --config "C:\Program Files\MongoDB\Server\7.0\bin\mongod.cfg"

Linux(systemd)

sudo systemctl start mongod
sudo systemctl enable mongod

macOS(brew)

brew services start mongodb-community

Docker

docker start mongodb

6.2 连接MongoDB

使用mongo shell

mongo

连接到指定主机和端口

mongo --host localhost --port 27017

连接到远程服务器

mongo --host 192.168.1.100 --port 27017

使用认证连接

mongo --host localhost --port 27017 -u admin -p password123 --authenticationDatabase admin

6.3 配置文件详解

网络配置

net:
port: 27017 # 监听端口

bindIp: 0.0.0.0 # 绑定IP地址

maxIncomingConnections: 65536

存储配置

storage:
dbPath: /data/db # 数据目录

journal:
enabled: true # 启用日志

wiredTiger:
engineConfig:
cacheSizeGB: 2 # 缓存大小

日志配置

systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
logRotate: true
verbosity: 1

安全配置

security:
authorization: enabled # 启用认证

keyFile: /data/keyfile # 副本集密钥文件

副本集配置

replication:
replSetName: "rs0" # 副本集名称

七、基本操作

7.1 数据库操作

显示所有数据库

show dbs

切换/创建数据库

use mydatabase

删除当前数据库

db.dropDatabase()

显示当前数据库

db

7.2 集合操作

创建集合

db.createCollection("users")

显示所有集合

show collections

删除集合

db.users.drop()

7.3 文档操作

插入文档:

插入单个文档

db.users.insertOne({
name: "张三",
age: 25,
email: "zhangsan@example.com"
})

插入多个文档

db.users.insertMany( {name: "李四", age: 30, email: "lisi@example.com"}, {name: "王五", age: 28, email: "wangwu@example.com"} )

查询文档:

查询所有文档

db.users.find()

查询指定条件

db.users.find({name: "张三"})

查询并格式化输出

db.users.find().pretty()

条件查询

db.users.find({age: {gt: 25}}) # 年龄大于25 db.users.find({age: {gte: 25}}) # 年龄大于等于25
db.users.find({age: {lt: 30}}) # 年龄小于30 db.users.find({age: {lte: 30}}) # 年龄小于等于30
db.users.find({age: {$ne: 25}}) # 年龄不等于25

范围查询

db.users.find({age: {gte: 25, lte: 30}})

正则查询

db.users.find({name: /张/})

更新文档:

更新单个文档

db.users.updateOne(
{name: "张三"},
{$set: {age: 26}}
)

更新多个文档

db.users.updateMany(
{age: {lt: 30}}, {set: {status: "young"}}
)

替换文档

db.users.replaceOne(
{name: "张三"},
{name: "张三", age: 26, email: "new@example.com"}
)

增加字段

db.users.updateOne(
{name: "张三"},
{$set: {phone: "13800138000"}}
)

删除字段

db.users.updateOne(
{name: "张三"},
{$unset: {phone: 1}}
)

删除文档:

删除单个文档

db.users.deleteOne({name: "张三"})

删除多个文档

db.users.deleteMany({age: {$lt: 25}})

删除所有文档

db.users.deleteMany({})

八、用户管理

8.1 创建管理员用户

切换到admin数据库

use admin

创建管理员用户

db.createUser({
user: "admin",
pwd: "admin123",
roles: {role: "userAdminAnyDatabase", db: "admin"}, {role: "readWriteAnyDatabase", db: "admin"}
})

8.2 创建普通用户

切换到目标数据库

use mydatabase

创建普通用户

db.createUser({
user: "myuser",
pwd: "user123",
roles: {role: "readWrite", db: "mydatabase"}
})

8.3 用户权限管理

|----------------------|------------------|
| 角色 | 权限 |
| read | 允许读取指定数据库 |
| readWrite | 允许读写指定数据库 |
| dbAdmin | 允许执行数据库管理任务 |
| dbOwner | 数据库所有者,拥有所有权限 |
| userAdmin | 允许在指定数据库中创建和管理用户 |
| readAnyDatabase | 允许读取所有数据库 |
| readWriteAnyDatabase | 允许读写所有数据库 |
| userAdminAnyDatabase | 允许在所有数据库中创建和管理用户 |
| dbAdminAnyDatabase | 允许执行所有数据库的管理任务 |
| root | 超级用户,拥有所有权限 |

8.4 用户管理命令

查看所有用户

use admin
db.system.users.find()

查看当前数据库的用户

db.getUsers()

修改用户密码

db.changeUserPassword("myuser", "newpassword")

删除用户

db.dropUser("myuser")

授予角色

db.grantRolesToUser("myuser", "readWrite")

撤销角色

db.revokeRolesFromUser("myuser", "readWrite")

九、备份与恢复

9.1 数据备份

备份所有数据库

mongodump --host localhost --port 27017 --out /backup/mongodb

备份指定数据库

mongodump --db mydatabase --out /backup/mongodb

备份指定集合

mongodump --db mydatabase --collection users --out /backup/mongodb

使用认证备份

mongodump --host localhost --port 27017 \
--username admin --password admin123 \
--authenticationDatabase admin \
--out /backup/mongodb

压缩备份

mongodump --db mydatabase --gzip --out /backup/mongodb

9.2 数据恢复

恢复所有数据库

mongorestore --host localhost --port 27017 /backup/mongodb

恢复指定数据库

mongorestore --db mydatabase /backup/mongodb/mydatabase

恢复指定集合

mongorestore --db mydatabase --collection users \
/backup/mongodb/mydatabase/users.bson

使用认证恢复

mongorestore --host localhost --port 27017 \
--username admin --password admin123 \
--authenticationDatabase admin \
/backup/mongodb

恢复压缩备份

mongorestore --db mydatabase --gzip /backup/mongodb/mydatabase

9.3 导出导入数据

导出JSON格式

mongoexport --db mydatabase --collection users \
--out users.json

导出CSV格式

mongoexport --db mydatabase --collection users \
--type csv --fields name,age,email \
--out users.csv

导入JSON数据

mongoimport --db mydatabase --collection users \
--file users.json

导入CSV数据

mongoimport --db mydatabase --collection users \
--type csv --headerline --file users.csv

十、常见问题解决

10.1 启动失败

问题:MongoDB服务无法启动

解决方案:

  1. 检查数据目录权限

  2. 检查配置文件语法

  3. 检查端口是否被占用

  4. 查看日志文件获取详细错误信息

10.2 连接失败

问题:无法连接到MongoDB服务器

解决方案:

  1. 检查MongoDB服务是否运行

  2. 检查防火墙设置

  3. 检查bindIp配置

  4. 验证用户名和密码

10.3 性能问题

问题:查询速度慢

解决方案:

  1. 创建合适的索引

  2. 使用explain()分析查询

  3. 优化查询语句

  4. 增加服务器内存

  5. 使用分片水平扩展

附录:常用命令参考

A.1 数据库命令

|-------------------|-----------|
| 命令 | 说明 |
| show dbs | 显示所有数据库 |
| use dbname | 切换/创建数据库 |
| db.dropDatabase() | 删除当前数据库 |
| db.stats() | 显示数据库统计信息 |

A.2 集合命令

|---------------------------|----------|
| 命令 | 说明 |
| show collections | 显示所有集合 |
| db.createCollection(name) | 创建集合 |
| db.collection.drop() | 删除集合 |
| db.collection.stats() | 显示集合统计信息 |

A.3 文档命令

|-----------------------------------------|--------|
| 命令 | 说明 |
| db.collection.insertOne(doc) | 插入单个文档 |
| db.collection.insertMany(docs) | 插入多个文档 |
| db.collection.find(query) | 查询文档 |
| db.collection.updateOne(query, update) | 更新单个文档 |
| db.collection.updateMany(query, update) | 更新多个文档 |
| db.collection.deleteOne(query) | 删除单个文档 |
| db.collection.deleteMany(query) | 删除多个文档 |

A.4 索引命令

|----------------------------------------|--------|
| 命令 | 说明 |
| db.collection.createIndex({field: 1}) | 创建升序索引 |
| db.collection.createIndex({field: -1}) | 创建降序索引 |
| db.collection.getIndexes() | 查看所有索引 |
| db.collection.dropIndex(name) | 删除指定索引 |
| db.collection.dropIndexes() | 删除所有索引 |

十一、安装文件已上传,地址:

https://download.csdn.net/download/m0_67097444/92942137

相关推荐
川石课堂软件测试1 小时前
性能测试|JMeter常用线程组设置策略
大数据·数据库·功能测试·测试工具·jmeter·mysql·单元测试
cheems95271 小时前
[Redis] redis常见命令和String字符串解析
数据库·redis·缓存
Database_Cool_1 小时前
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
数据库·mysql·阿里云
阿演1 小时前
我把这个桌面数据库工具又升级了一轮:现在支持 ClickHouse,还能可视化建表和改表了
数据库·clickhouse·ai编程·数据库连接工具
J.Kuchiki1 小时前
【PostgreSQL内核学习 —— 外部排序生成与归并】
数据库·学习·postgresql
SAP庖丁解码2 小时前
SAP 物料凭证表详解
数据库
Jul1en_2 小时前
【Redis】一文讲透缓存更新策略与缓存预热、穿透、雪崩、击穿
数据库·redis·缓存
逻极2 小时前
MongoDB 从入门到精通:文档数据库的灵活之道
分布式·mongodb·nosql·聚合框架
Database_Cool_2 小时前
AnalyticDB MySQL vs Apache Doris:企业级云数仓如何选型——全维度对比指南
数据库·数据仓库·mysql·阿里云