MongoDB从零基础搭建到实战

MongoDB从零基础搭建到实战

MongoDB作为当下最流行的开源文档型NoSQL数据库,凭借灵活的文档结构、高扩展性和易用性,成为前后端开发、大数据存储、云原生项目的首选数据库之一。相比传统关系型数据库,它无需严格预定义表结构,适配多变的业务数据需求,尤其适合Node.js、Python、Java等主流开发场景。

本篇教程将从零开始,带你完成MongoDB的环境搭建、基础配置、核心命令操作、可视化工具使用、高级查询与实战,全程步骤详细、代码可直接复用,适合零基础新手入门,也适合有基础的开发者查漏补缺。


一、MongoDB核心概念先理清

学习MongoDB前,先搞懂核心术语,避免和关系型数据库混淆,上手更快。

1.1 MongoDB与关系型数据库核心对比

MongoDB术语 关系型数据库(MySQL/Oracle)术语 说明
数据库(Database) 数据库(Database) 存储数据的容器,一个MongoDB可建多个库
集合(Collection) 数据表(Table) 无需预定义结构,存储同类文档,动态扩容
文档(Document) 数据行(Row) 最小数据单元,用BSON格式(类JSON,支持更多数据类型)
字段(Field) 数据列(Column) 文档中的键值对,支持嵌套、数组结构
_id 主键(Primary Key) MongoDB自动生成唯一主键,也可自定义

1.2 核心特性

  • 文档型存储:数据以BSON格式存储,支持嵌套对象、数组,无需严格Schema

  • 高可用:支持副本集,主节点故障自动切换,保证数据不丢失

  • 高扩展性:支持分片集群,应对海量数据和高并发场景

  • 丰富查询:支持条件查询、聚合、索引、排序、分页,媲美关系型数据库

  • 跨平台:支持Windows、Mac、Linux全系统,兼容主流开发语言


二、MongoDB环境搭建(全系统教程)

MongoDB分为**社区版(Community)**和企业版,个人学习和中小型项目使用社区版完全足够,本篇以最新稳定版MongoDB 7.0为例讲解。

2.1 系统环境要求

  • Windows:Windows 10 及以上版本

  • Mac:macOS 10.15 及以上版本

  • Linux:Ubuntu 18.04+/CentOS 7+/Debian 10+

  • 内存:建议至少2GB,开发环境1GB也可运行

2.2 Windows系统安装与配置

2.2.1 下载安装包

  1. 访问MongoDB官方下载地址:https://www.mongodb.com/try/download/community

  2. 选择Version:7.0(最新稳定版),Platform:Windows,Package:MSI

  3. 点击Download下载安装包,双击运行

2.2.2 安装步骤

  1. 同意协议,选择Complete(完整安装),新手推荐

  2. 服务配置页面,勾选"Install MongoD as a Service",设置服务自动启动

  3. 数据目录默认:C:\Program Files\MongoDB\Server\7.0\data,日志目录默认:C:\Program Files\MongoDB\Server\7.0\log,无需修改

  4. 取消勾选"Install MongoDB Compass"(后续单独安装可视化工具),点击Install完成安装

2.2.3 配置环境变量(关键)

  1. 右键此电脑→属性→高级系统设置→环境变量

  2. 在系统变量中找到Path,点击编辑→新建

  3. 添加MongoDB的bin目录路径:C:\Program Files\MongoDB\Server\7.0\bin

  4. 一路确定保存,打开命令提示符(CMD),输入mongod --version,显示版本号即配置成功

2.2.4 启动与关闭服务

  • 启动服务:管理员CMD输入net start MongoDB

  • 关闭服务:管理员CMD输入 net stop MongoDB

  • 连接数据库:CMD输入 mongosh,进入MongoDB命令行客户端

2.3 Mac系统安装与配置

2.3.1 Homebrew安装(推荐)

  1. 打开终端,安装MongoDB官方tap:brew tap mongodb/brew

  2. 安装社区版:brew install mongodb-community@7.0

2.3.2 启动服务

  • 开机自启:brew services start mongodb-community@7.0

  • 临时启动:mongod --config /opt/homebrew/etc/mongod.conf

  • 连接数据库:终端输入 mongosh

2.4 Linux(Ubuntu)系统安装与配置

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

  2. 添加软件源: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

  4. 启动服务:sudo systemctl start mongod

  5. 设置开机自启:sudo systemctl enable mongod

  6. 连接数据库:mongosh

2.5 验证安装成功

任意系统终端输入mongosh,出现以下提示即连接成功:

bash 复制代码
Current Mongosh Log ID: xxxxxxxx
Connecting to:          mongodb://127.0.0.1:27017/
Using MongoDB:          7.0.0
Using Mongosh:          2.0.0
test>

默认连接端口:27017,默认数据库:test


三、MongoDB基础核心操作(mongosh命令行)

进入mongosh客户端后,即可执行数据库、集合、文档的增删改查操作,所有命令区分大小写,以下为高频常用命令,建议收藏。

3.1 数据库操作

3.1.1 查看所有数据库

javascript 复制代码
show dbs
# 或
show databases

注意:空数据库不会显示,插入数据后才会展示

3.1.2 创建/切换数据库

javascript 复制代码
# 语法:use 数据库名
use mydb
# 切换到mydb库,不存在则自动创建

3.1.3 查看当前所在数据库

javascript 复制代码
db

3.1.4 删除数据库

javascript 复制代码
# 先切换到要删除的库
use mydb
# 执行删除
db.dropDatabase()

3.2 集合操作(相当于数据表)

3.2.1 创建集合

MongoDB无需手动创建集合,插入文档时自动创建;也可手动创建指定配置

javascript 复制代码
# 手动创建集合
db.createCollection("user")
# 创建固定大小集合(可选)
db.createCollection("log", { capped: true, size: 1024*1024, max: 1000 })

3.2.2 查看所有集合

javascript 复制代码
show collections
# 或
show tables

3.2.3 删除集合

javascript 复制代码
# 语法:db.集合名.drop()
db.user.drop()

3.3 文档操作(核心增删改查)

文档是MongoDB的核心,以键值对形式存储,支持嵌套、数组,以下用user集合演示。

3.3.1 插入文档

插入单个文档
javascript 复制代码
db.user.insertOne({
  name: "张三",
  age: 22,
  gender: "男",
  hobby: ["编程", "篮球"],
  address: {
    city: "北京",
    district: "朝阳区"
  },
  createTime: new Date()
})
插入多个文档
javascript 复制代码
db.user.insertMany([
  {name: "李四", age: 25, gender: "女", hobby: ["读书", "旅游"]},
  {name: "王五", age: 19, gender: "男", hobby: ["游戏", "摄影"]},
  {name: "赵六", age: 28, gender: "女", hobby: ["健身", "美食"]}
])

3.3.2 查询文档

查询所有文档(格式化输出)
javascript 复制代码
db.user.find().pretty()
条件查询
javascript 复制代码
# 1. 精确查询:查找姓名为张三的用户
db.user.find({name: "张三"}).pretty()

# 2. 比较查询:年龄大于20的用户 ($gt大于, $lt小于, $gte大于等于, $lte小于等于, $ne不等于)
db.user.find({age: {$gt: 20}}).pretty()

# 3. 多条件且查询:年龄20-30之间的男性用户
db.user.find({age: {$gte: 20, $lte: 30}, gender: "男"}).pretty()

# 4. 或查询:男性或年龄大于25
db.user.find({$or: [{gender: "男"}, {age: {$gt: 25}}]}).pretty()

# 5. 模糊查询:姓名包含"三"
db.user.find({name: /三/}).pretty()

# 6. 字段过滤:只显示name和age,隐藏_id
db.user.find({}, {name: 1, age: 1, _id: 0}).pretty()
排序、分页、统计
javascript 复制代码
# 排序:按年龄升序(1升序,-1降序)
db.user.find().sort({age: 1}).pretty()

# 分页:跳过2条,取2条(skip跳过条数,limit取条数)
db.user.find().skip(2).limit(2).pretty()

# 统计总数
db.user.countDocuments()
# 条件统计
db.user.countDocuments({gender: "男"})

3.3.3 更新文档

更新单个文档
javascript 复制代码
# 将张三的年龄改为23
db.user.updateOne(
  {name: "张三"},  # 查询条件
  {$set: {age: 23}}  # 更新内容
)
更新多个文档
javascript 复制代码
# 所有女性用户添加status字段
db.user.updateMany(
  {gender: "女"},
  {$set: {status: "active"}}
)
替换整个文档
javascript 复制代码
db.user.replaceOne(
  {name: "王五"},
  {name: "王五", age: 20, gender: "男", hobby: ["阅读"]}
)

3.3.4 删除文档

javascript 复制代码
# 删除单个文档:删除赵六
db.user.deleteOne({name: "赵六"})

# 删除多个文档:删除年龄小于20的用户
db.user.deleteMany({age: {$lt: 20}})

# 清空集合所有文档(保留集合)
db.user.deleteMany({})

四、MongoDB可视化工具使用(MongoDB Compass)

命令行操作适合熟练开发者,新手推荐使用MongoDB Compass(官方免费可视化工具),图形化界面操作,无需记命令,直观管理数据库。

4.1 安装与连接

  1. 下载地址:https://www.mongodb.com/products/compass

  2. 安装后打开,默认连接地址:mongodb://localhost:27017

  3. 点击Connect,即可连接本地MongoDB服务

4.2 核心功能

  • 可视化查看所有数据库、集合、文档

  • 图形化新增、编辑、删除文档

  • 可视化创建索引、执行查询语句

  • 查看数据库性能、数据统计

  • 导入导出数据,支持JSON、CSV格式


五、MongoDB高级操作

5.1 索引管理(提升查询效率)

索引是MongoDB性能优化的核心,避免全表扫描,常用索引操作:

javascript 复制代码
# 创建单字段索引
db.user.createIndex({name: 1})

# 创建复合索引
db.user.createIndex({age: 1, name: -1})

# 查看所有索引
db.user.getIndexes()

# 删除索引
db.user.dropIndex("name_1")

5.2 聚合查询(Aggregation)

适合复杂数据统计、分组、计算,类似SQL的GROUP BY:

javascript 复制代码
# 按性别分组,统计每组人数和平均年龄
db.user.aggregate([
  {$group: {
    _id: "$gender",
    count: {$sum: 1},
    avgAge: {$avg: "$age"}
  }}
])

5.3 数据备份与恢复

5.3.1 备份数据(mongodump)

bash 复制代码
# 备份所有数据库
mongodump

# 备份指定数据库
mongodump -d mydb -o ./backup

5.3.2 恢复数据(mongorestore)

bash 复制代码
# 恢复所有数据库
mongorestore

# 恢复指定数据库
mongorestore -d mydb ./backup/mydb

六、常见问题与避坑指南

  1. mongosh无法连接:检查MongoDB服务是否启动,端口27017是否被占用

  2. 插入数据后数据库不显示:空数据库不展示,插入集合数据后自动显示

  3. 查询速度慢:未创建索引,对高频查询字段建立索引

  4. 权限问题:生产环境务必设置账号密码,禁止外网直接访问27017端口

  5. 数据丢失:重要数据定期备份,生产环境建议搭建副本集保证高可用


七、总结

本篇教程完整覆盖了MongoDB从环境搭建、基础命令、可视化操作到高级实战的全流程,MongoDB的灵活文档结构和易用性,让它成为现代开发的必备数据库。零基础新手按照步骤一步步操作,即可快速上手;进阶开发者可重点掌握索引优化、聚合查询、副本集搭建等内容,适配生产环境需求。

后续可深入学习MongoDB集群部署、事务操作、与主流编程语言(Node.js/Python/Java)集成等内容,进一步提升开发和运维能力。

相关推荐
知识分享小能手6 小时前
MongoDB入门学习教程,从入门到精通,MongoDB索引(5)
数据库·学习·mongodb
知识分享小能手18 小时前
MongoDB入门学习教程,从入门到精通,MongoDB查询(4)
数据库·学习·mongodb
知识分享小能手2 天前
MongoDB入门学习教程,从入门到精通,MongoDB创建、更新和删除文档(3)
数据库·学习·mongodb
爬山算法2 天前
MongoDB(60)如何使用explain命令?
数据库·mongodb
知识分享小能手3 天前
MongoDB入门学习教程,从入门到精通,MongoDB入门指南 —— 知识点详解(2)
数据库·学习·mongodb
vpk1123 天前
使用 Docker Compose 快速安装 MongoDB
mongodb·docker·容器
爬山算法3 天前
MongoDB(55)如何监控分片集群?
数据库·mongodb
vpk1123 天前
Docker Compose 部署 Yapi(连接本地MongoDB)
mongodb·docker·yapi
jianqiang.xue4 天前
ESP32-S3 运行 Linux 全指南:从 RISC-V 模拟器移植到 8 秒快速启动
linux·stm32·单片机·mongodb·risc-v·esp32s3