1. 什么是 MongoDB?
MongoDB
是一种 面向文档的 NoSQL
数据库,与传统的关系型数据库(MySQL
、PostgreSQL
)不同,它不使用表格和行,而是使用 BSON(二进制 JSON
)存储数据。
简单来说,它是一个 JSON 存储与查询引擎。
MongoDB 的核心特性:
文档型存储:每条数据是一个 JSON 对象。
无固定模式(Schema-less):字段可以灵活增加或减少。
高扩展性:支持分片(
Sharding
)与副本集(Replica Set
)。强大的查询语言:支持聚合(
Aggregation
)、全文检索(Full-Text Search
)。天然适合大数据与高并发场景。
2. MongoDB 的基本概念
关系型数据库 | MongoDB | 对应概念 说明 |
---|---|---|
Database | Database | 数据库,存放集合的容器 |
Table | Collection | 集合,存放文档 |
Row | Document | 文档,一条数据记录 |
Column | Field | 字段,文档的属性 |
Index | Index | 索引,提高查询性能 |
3. 安装与启动
macOS(Homebrew)
1 | brew tap mongodb/brew |
Ubuntu / Debian
1 | sudo apt-get install -y mongodb |
连接
1 | mongosh |
4. 基本操作
4.1 创建数据库与集合
1 | // 切换数据库(没有会自动创建) |
4.2 插入数据
1 | db.users.insertOne({ name: "Alice", age: 25 }) |
4.3 查询数据
1 | // 查询全部 |
4.4 更新数据
1 | db.users.updateOne( |
4.5 删除数据
1 | db.users.deleteOne({ name: "Charlie" }) |
5. 高级功能
5.1 索引
1 | // 创建索引 |
5.2 聚合(Aggregation)
1 | db.users.aggregate([ |
5.3 文本搜索
1 | db.articles.createIndex({ content: "text" }) |
6. 副本集与分片
副本集(Replica Set):多台服务器存储相同数据,实现高可用与自动故障切换。
分片(Sharding):将数据水平拆分到多台服务器,适合海量数据场景。
7. Python 操作 MongoDB 示例
1 | from pymongo import MongoClient |
8. 最佳实践
为高频查询字段加索引,避免全表扫描。
**控制文档大小,避免超过
16MB
限制。**合理分库分集合,提升性能。
**聚合管道尽量减少
$lookup
,避免跨集合过多关联。**使用连接池(例如
Python
的MongoClient
默认支持)。
9. 总结
MongoDB
以其灵活的文档存储和强大的查询能力,成为现代 Web
应用、日志分析、大数据处理的重要数据库之一。
如果你需要:
存储结构灵活的数据
快速开发
MVP
支持高并发与大规模数据
那么 MongoDB
将会是一个非常不错的选择。