# 常见问题解答（FAQ）

URL: https://caijiao.org/mongodb/11-appendix/02-faq
Source: docs/mongodb/11-appendix/02-faq.md
Description: 本章节收集 MongoDB 使用过程中常见问题及解答，帮助开发者快速排查和解决常见难题。

## 1. MongoDB 是关系型数据库吗？

[MongoDB](/mongodb/) 是一种 NoSQL 文档型数据库，数据以 BSON 格式存储，支持灵活的文档结构，不同于传统关系型数据库的表结构。

## 2. 如何保证数据的一致性？

MongoDB 支持单文档原子操作，并且在副本集模式下支持多文档事务，能够保证强一致性需求。

## 3. 数据库性能下降怎么办？

建议检查索引是否合理，使用 `explain()` 分析查询，优化慢查询；必要时考虑分片或增加硬件资源。

## 4. 为什么插入数据时出现重复键错误？

可能是因为唯一索引约束导致，检查插入数据是否违反索引规则，确保主键或唯一字段唯一。

## 5. 如何防止数据丢失？

应配置副本集，实现数据冗余；定期备份数据，验证备份有效性，制定恢复方案。

## 6. 连接失败怎么办？

确认 MongoDB 服务是否启动，网络是否通畅，连接字符串和端口配置是否正确，防火墙设置是否允许访问。

## 7. 如何实现安全认证？

启用 MongoDB 用户认证，使用角色控制访问权限，开启 TLS 加密，限制 IP 白名单。

## 8. 什么时候使用嵌套文档，什么时候使用引用？

嵌套文档适合包含频繁一起访问的数据，减少查询次数；引用适合数据独立、经常更新的场景，避免数据冗余。

## 9. 如何处理大规模数据？

采用分片集群，实现水平扩展，合理设计分片键，保证数据均衡分布。

## 10. 如何监控 MongoDB 性能？

使用 MongoDB 自带的 Profiler，结合监控平台（如 MongoDB Atlas、Prometheus）实时监控。

---

本 FAQ 涵盖 MongoDB 常见的核心问题，帮助开发者快速定位和解决使用中的难题。
