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)集成等内容,进一步提升开发和运维能力。

相关推荐
CodeMartain11 小时前
MongoDB--Spring
数据库·mongodb·spring
水云桐程序员1 天前
单片机:定时器/PWM 配置 - 呼吸灯效果
单片机·嵌入式硬件·mongodb
WeeJot嵌入式1 天前
【GPIO】按键控制小灯
单片机·嵌入式硬件·mongodb
2401_832635582 天前
Spring Data MongoDB 最佳实践:如何构建高效数据访问层
java·mongodb·spring
橙露2 天前
Python 操作 MongoDB:非关系型数据查询与分析
开发语言·python·mongodb
知识分享小能手2 天前
MongoDB入门学习教程,从入门到精通,部署MongoDB(24)
数据库·学习·mongodb
知识分享小能手3 天前
MongoDB入门学习教程,从入门到精通,MongoDB备份完全指南(23)
数据库·学习·mongodb
小冯不疯4 天前
钉钉与金蝶云星空无缝集成方案
mongodb
曲幽4 天前
我用fastapi-scaff搭了个项目,两天工期缩到两小时,老板以为我开挂了
python·api·fastapi·web·celery·cli·db·alembic·fastapi-scaff
一江寒逸5 天前
零基础从入门到精通MongoDB(附加篇):面试八股文全集
数据库·mongodb·面试