MongoDB 简介
MongoDB 是一个开源、面向文档的 NoSQL 数据库,用 C++ 编写。与传统关系型数据库不同,MongoDB 使用类似 JSON 的 BSON(Binary JSON)格式存储数据,具有灵活的动态模式。
与关系型数据库对比
| 对比 | 关系型数据库 | MongoDB |
|---|---|---|
| 数据模型 | 表(Table) → 行(Row) | 集合(Collection) → 文档(Document) |
| Schema | 预定义、严格 | 动态、灵活 |
| 扩展方式 | 垂直扩展为主 | 水平扩展(分片) |
| 事务 | 强 ACID | v4.0+ 多文档 ACID |
核心特性
- 文档模型:数据以嵌套文档和数组的形式组织,贴近面向对象编程
- 高可用:通过副本集(Replica Set)实现自动故障转移
- 水平扩展:通过分片(Sharding)将数据分布到多台机器
- 丰富的查询语言:支持增删改查、聚合管道、全文搜索、地理空间查询
- 灵活的索引:支持单字段、复合、文本、地理空间等多种索引类型
基本概念
数据库层级
MongoDB 实例
└── 数据库(Database)
└── 集合(Collection)
└── 文档(Document)| 层级 | 说明 |
|---|---|
| Database | 一个实例可包含多个数据库,每个数据库有独立的权限和文件 |
| Collection | 类似 SQL 中的表,无需预定义 Schema,文档可具有不同字段 |
| Document | BSON 格式的键值对,支持嵌套文档和数组 |
基本操作
shell
# 连接
mongosh
# 查看所有数据库
show dbs
# 切换 / 创建数据库(使用时自动创建)
use mydb
# 查看当前数据库的集合
show collections