用途:MongoDB 是面向文档的 NoSQL 数据库,以 BSON(类 JSON)文档存储数据,适合模式快速演进、层级/嵌套数据、实时聚合分析、地理空间应用、内容管理系统、IoT 数据接入及目录/库存系统;不适合复杂多表连接、跨多文档的强 ACID 事务、严格模式约束等场景。
主要能力:灵活模式;带二级索引的丰富查询语言;聚合框架;分片横向扩展;副本集高可用;变更流实时数据;地理空间与全文搜索。
文档设计:可在文档内嵌入(1:1 或 1:少量、常一起查询、子数据有界)或引用(多对多、子数据无界增长、需独立访问、避免超过 16MB 上限),也可采用扩展引用混合模式。
使用方式:通过 CRUD(find、insertOne/Many、updateOne/Many、upsert、delete)及比较、逻辑、元素、数组、嵌入字段、正则等查询运算符和 $set、$inc、$push、$addToSet、$pull 等更新运算符操作。索引用 createIndex 创建单字段、复合、唯一、部分、TTL、文本、地理空间、多键、哈希索引,复合索引遵循 ESR(等值、排序、范围)原则,可用 explain 分析、getIndexes 查看、dropIndex 删除。聚合管道含 $match、$project、$addFields、$group、$sort、$skip、$limit、$unwind、$lookup、$facet 等阶段,可用于销售按月统计、头部客户、品类表现等分析。事务自 4.0+ 支持多文档操作;变更流可 watch 集合并用 resumeToken 断点续传;另有 Spring Data 集成(@Document、@Indexed、@Field、@DBRef、@CreatedDate、@Version 等注解及 MongoRepository 派生查询)。
限制:资料表明跨多文档 ACID 事务能力有限(4.0+ 改善但仍受限),复杂多表连接与严格模式约束场景建议用关系型数据库。