🧠 一、MongoDB 是什么?
MongoDB 是一款开源的 NoSQL 数据库,用来存储灵活的 JSON 文档结构数据,适合快速开发和处理海量非结构化数据。
🌟 特点:
- 📄 数据是 JSON 格式,比 SQL 更直观
- ⚡ 插入快、查询灵活、支持嵌套字段
- 📁 不用建表,随用随插入
🛠️ 二、安装方式(任选其一)
| 方法 |
工具 |
说明 |
| 🖥️ 本地安装 |
官网下载安装包 |
Windows/mac/Linux |
| 🐳 Docker 安装 |
docker run mongo |
推荐快速开发用 |
| ☁️ 云服务 |
MongoDB Atlas 免费托管版 |
不用部署服务器 |
🧩 三、核心概念(和 MySQL 区别对照)
| MongoDB术语 |
类似于 MySQL 的 |
说明 |
| 🛢️ Database |
数据库 |
整个数据库容器 |
| 📁 Collection |
表(Table) |
存 JSON 文档的集合 |
| 📄 Document |
行(Row) |
一条 JSON 格式的数据记录 |
| 🔑 _id |
主键(id) |
每条文档都有唯一 _id 字段 |
🧪 四、常用命令示例(终端、Mongo Shell 中执行)
📁 1️⃣ 创建数据库和集合
use mydb; // 切换/创建数据库
db.createCollection("users") // 创建集合(可省略,插入自动创建)
📄 2️⃣ 插入数据
db.users.insertOne({ name: "张三", age: 25 }) // 插入一条
db.users.insertMany([{ name: "李四" }, { name: "王五", age: 30 }]) // 多条插入
🔍 3️⃣ 查询数据
db.users.find() // 查询所有
db.users.find({ age: { $gt: 20 } }) // 查询年龄大于20的
db.users.findOne({ name: "张三" }) // 查询一条
✏️ 4️⃣ 更新数据
db.users.updateOne({ name: "张三" }, { $set: { age: 26 } })
❌ 5️⃣ 删除数据
db.users.deleteOne({ name: "张三" }) // 删除一条
db.users.deleteMany({ age: { $lt: 20 } }) // 删除多条
🔧 五、特殊语法(MongoDB 查询语言)
| 操作符 |
用法示例 |
含义 |
$gt |
{ age: { $gt: 18 } } |
大于 |
$lt |
{ age: { $lt: 30 } } |
小于 |
$in |
{ name: { $in: ["张三", "李四"] }} |
包含 |
$regex |
{ name: { $regex: "^张" } } |
模糊匹配 |
$and, $or |
{ $or: [{ age: 20 }, { age: 30 }] } |
多条件组合查询 |
📦 六、MongoDB vs MySQL 对比表
| 对比项 |
MongoDB 📄 |
MySQL 🧾 |
| 数据结构 |
JSON文档 |
表格结构 |
| 表结构是否固定 |
❌ 非固定(灵活) |
✅ 固定(需提前建表) |
| 适合场景 |
海量数据、内容管理、实时数据 |
传统业务系统、强结构化数据 |
| 查询语法 |
JS 对象语法 |
SQL语法 |
| 学习曲线 |
简单(入门快) |
稍复杂(需学 SQL) |
🧭 七、推荐学习路线
1️⃣ 学习基础概念:数据库、集合、文档
2️⃣ 熟练掌握增删改查命令(find、insert、update、delete)
3️⃣ 学会使用 $gt、$or、$regex 等查询条件
4️⃣ 使用 MongoDB Atlas 做远程开发测试
5️⃣ 项目实战(如:开发一个用户系统)
📚 推荐资料
✅ 总结一句话:
MongoDB 适合前后端自由开发、高并发、高灵活性的场景,入门简单,非常适合现代应用。