AI编程辅助工具:5个提升代码可用性的Prompt模板
2026/11/5 12:25:43
MongoDB 是主流的文档型 NoSQL 数据库,以灵活的文档模型、高性能、易扩展著称,是 Java 后端面试中 NoSQL 模块的核心考点(重点考:存储原理、索引、副本集、分片、与 MySQL 对比、性能优化)。
_id字段(默认自动生成 ObjectId,可自定义),作为主键。| 存储引擎 | 特点 | 适用场景 |
|---|---|---|
| WiredTiger(默认) | 支持行级锁、压缩(Snappy/Zlib)、MVCC、事务 | 生产环境首选,高并发、大数据量 |
| MMAPv1(废弃) | 表级锁、内存映射文件 | 低版本兼容,已淘汰 |
数据库名.集合名(如test.user);Journal 日志:预写日志(WAL),默认 100ms 刷盘,崩溃后可恢复;Oplog 日志:副本集数据同步日志(固定大小的循环日志)。_id默认为唯一索引,不可删除。| 索引类型 | 作用 | 适用场景 |
|---|---|---|
| 单字段索引 | 单个字段的升序 / 降序索引 | 单条件查询(如where name = '张三') |
| 复合索引 | 多个字段组合的索引 | 多条件查询(如where age > 20 and gender = '男') |
| 唯一索引 | 保证字段值唯一 | 手机号、邮箱等唯一标识 |
| 地理空间索引 | 支持地理位置查询(如附近的人) | LBS 应用(外卖、打车) |
| 文本索引 | 支持全文检索 | 文章、商品标题搜索 |
| 哈希索引 | 按字段哈希值索引 | 分片集群的分片键(均匀分布数据) |
explain()分析查询计划,避免全表扫描(COLLSCAN);MongoDB 是文档型 NoSQL 数据库,核心特点:
_id字段作用?ObjectId 构成?_id是文档唯一主键,默认自动生成 ObjectId,不可重复;基础类型:字符串、数字(int/long/double)、布尔、日期、null;特殊类型:ObjectId、数组、嵌套文档、二进制数据、正则表达式。
{a:1, b:1, c:1}仅对a、a+b、a+b+c查询生效,对b、b+c查询不生效。COLLSCAN);projection只返回需要的字段(减少数据传输);skip()+limit()优化(大数据量用_id范围分页);explain()分析查询计划,优化慢查询。| 特性 | MongoDB | MySQL |
|---|---|---|
| 数据模型 | 文档型(无模式) | 关系型(固定表结构) |
| 事务 | 支持多文档 / 分布式事务(弱) | 强 ACID 事务 |
| 索引 | B + 树、地理空间、文本索引 | B + 树、全文索引(需插件) |
| 扩展 | 水平扩展(分片)易 | 水平扩展复杂(分库分表) |
| 适用场景 | 非结构化 / 半结构化数据(日志、用户画像、LBS) | 结构化数据(订单、支付、核心业务) |
@Document:标记实体类对应 MongoDB 集合;@Id:指定主键字段(对应_id);@Field:指定字段名(映射集合字段);@Indexed:标记索引字段;@CompoundIndex:标记复合索引。bulkWrite)代替单条插入;w:1仅主节点确认,默认w:majority);mongodump(逻辑备份)、文件系统快照(物理备份);mongorestore;mongodump + mongorestore、分片集群数据迁移工具。db.collection.find().explain()看执行计划:是否走索引(IXSCAN)、是否全表扫描(COLLSCAN);w:majority(多数节点确认写入);explain()优化查询;