MongoDB 是一种流行的 NoSQL 数据库,以其灵活性和高性能著称,特别适合处理非结构化或半结构化数据。以下是 MongoDB 的核心概念和特性:
1. 核心特点
文档存储:数据以 BSON(类似 JSON)格式存储为“文档”,结构灵活,支持嵌套和动态字段。
无固定模式:无需预先定义表结构,可随时调整数据结构。
水平扩展:通过分片(Sharding)实现分布式存储,轻松应对大数据量。
高可用性:通过副本集(Replica Set)实现数据冗余和自动故障转移。
高性能:支持索引、聚合管道、内存计算等优化技术。
2. 核心概念
数据库(Database):数据容器,包含多个集合。
集合(Collection):类似关系型数据库的“表”,存储一组文档。
文档(Document):数据的基本单位,格式为键值对(如 { name: "Alice", age: 30 })。
字段(Field):文档中的键值对,如 name 或 age。
3. 基本操作(CRUD)
插入文档:
javascript
db.users.insertOne({ name: "Bob", email: "bob@example.com" });
查询文档:
javascript
db.users.find({ age: { $gt: 25 } }); // 查询年龄大于25的文档
更新文档:
javascript
db.users.updateOne({ name: "Bob" }, { $set: { age: 31 } });
删除文档:
javascript
db.users.deleteOne({ name: "Bob" });
4. 高级功能
聚合管道(Aggregation Pipeline):
使用 $match、$group、$sort 等阶段处理数据:
javascript
db.orders.aggregate([
{ $match: { status: "completed" } },
{ $group: { _id: "$product", total: { $sum: "$amount" } } }
]);
索引优化:
javascript
db.users.createIndex({ email: 1 }); // 创建唯一索引加速查询
地理空间查询:支持地理位置数据的存储和查询(如 $near、$geoWithin)。
5. 高可用与扩展
副本集(Replica Set):
由多个节点组成(1个主节点 + N个从节点),主节点故障时自动选举新主节点。
分片(Sharding):
将数据分布到多个分片(Shard)中,适合超大规模数据集。
6. 适用场景
实时分析:如日志处理、用户行为分析。
内容管理:如博客、商品目录(支持动态字段)。
物联网(IoT):处理高频写入的传感器数据。
缓存层:替代传统缓存系统(如 Redis)。
7. 不适用场景
需要复杂事务(如银行转账)。
强关系型数据(多表联查频繁)。
严格的数据一致性要求(MongoDB 优先保证可用性和分区容忍性)。
8. 工具与生态
MongoDB Compass:图形化管理工具。
MongoDB Atlas:官方云托管服务。
驱动支持:Python、Java、Node.js 等语言的官方驱动。
示例:文档结构
json
{
"_id": ObjectId("507f191e810c19729de860ea"),
"name": "Alice",
"age": 30,
"address": {
"city": "Beijing",
"street": "Xinjiekou"
},
"hobbies": ["reading", "hiking"]
}
MongoDB 的灵活性和扩展性使其成为现代应用的热门选择,尤其适合快速迭代和数据类型多变的场景。
上一条:购软平台是gurobi软件供应商
下一条:mongodb是什么类型的数据库