MongoDB 是一种 NoSQL 数据库(非关系型数据库),以其灵活的数据模型、高性能和水平扩展能力而闻名。以下是它的核心特点和解析:
文档型数据库
数据以 BSON(类似JSON的二进制格式)文档形式存储,每个文档可以有不同的字段结构,适合处理半结构化或动态数据。
{
"_id": ObjectId("5f8d..."),
"name": "Alice",
"age": 30,
"hobbies": ["coding", "hiking"]
}
无固定模式(Schema-less)
不需要预先定义表结构,字段可动态增减,适合快速迭代的开发场景。
高性能
支持内存映射、索引优化(包括复合索引、全文索引等),读写吞吐量高,尤其适合高并发场景。
水平扩展(Sharding)
通过分片技术将数据分布到多台服务器,轻松应对海量数据和高负载。
聚合框架
提供强大的聚合管道(Aggregation Pipeline),支持复杂的数据分析和转换操作。
特性 | MongoDB (NoSQL) | MySQL (关系型) |
---|---|---|
数据模型 | 文档(键值对集合) | 表(行列结构) |
扩展方式 | 水平扩展(分片) | 垂直扩展(更强硬件) |
事务支持 | 支持多文档事务(4.0+) | 完善的事务(ACID) |
查询语言 | MongoDB查询语言(MQL) | SQL |
适用场景 | 快速变化的数据、高吞吐 | 强一致性、复杂关联查询 |
// 插入文档
db.users.insertOne({name: "Bob", role: "admin"});
// 查询
db.users.find({age: {$gt: 25}});
// 更新
db.users.updateOne({name: "Bob"}, {$set: {status: "active"}});
// 聚合:统计每个角色的用户数
db.users.aggregate([
{$group: {_id: "$role", count: {$sum: 1}}}
]);
优势:
局限:
mongosh
如果需要深入某个方向(如索引优化、分片配置),可以进一步探讨!