用途与定位:MongoDB 是面向文档的 NoSQL 数据库,使用类似 JSON 的灵活文档存储数据,适合模式快速演进、层级/嵌套数据、聚合实时分析、地理空间应用、内容管理、IoT 数据采集、目录与库存系统。资料指出,复杂多表连接、需严格模式约束的场景应改用关系型数据库;跨多文档 ACID 事务自 4.0 起有改进但仍有局限。
主要能力:灵活模式的无模式文档;带二级索引的查询语言;聚合分析框架;分片水平扩展;副本集高可用;变更流实时数据;地理空间与全文检索。支持基础 CRUD、比较/逻辑/元素/数组/正则查询操作符,以及 $set、$unset、$inc、$push、$addToSet 等更新操作符。
设计方式:文档采用 BSON 格式,_id 为主键。相关数据可嵌入式(1:1 或 1:少、查询频繁、子数据有界)或引用式(多对多、无界增长、需独立访问、文档接近 16MB 上限);也可采用扩展引用混合模式。
索引与聚合:支持单字段、复合、唯一、部分、TTL、文本、地理空间、多键、哈希索引。复合索引遵循 ESR 规则(相等、排序、范围)。可用 explain("executionStats") 分析查询,关注 IXSCAN 与 COLLSCAN、totalDocsExamined 与 totalKeysExamined。聚合管道包含 $match、$project、$addFields、$group、$sort、$skip、$limit、$unwind、$lookup、$facet 等阶段。
用法与集成:资料给出 db.collection.find/insertOne/insertMany/updateOne/updateMany/deleteOne/deleteMany、createIndex、aggregate、watch 等用法示例;多文档事务通过 startSession/startTransaction/commitTransaction/abortTransaction 实现;变更流用 watch 监听。Spring Data 集成以 @Document、@Id、@Indexed、@DBRef、@CreatedDate、@Version 注解实体,并以 MongoRepository 派生查询。
限制:原文内容在 Spring Data Repository 接口处被截断,后续示例暂未提供;具体版本要求、安装步骤、授权与收费信息暂未提供。