首页 / MongoDB 入门教程 / 数据库与集合

MongoDB 入门教程

数据库与集合

本教程共 50 篇 · 第 5 篇 · 更新于 2026-07-30 · 约 6 分钟阅读

MongoDBMongoDB 入门教程数据库集合usecreateCollection

5. 数据库与集合

本节目标:搞懂 MongoDB 的「数据库 → 集合 → 文档」三层结构,学会建库、建集合、查看和删除它们。

5.1 三层结构

MongoDB 的数据是层层套着的:

  • 数据库(Database):最高层容器,一个实例里可以有多个库。
  • 集合(Collection):库里的「表」,存放一类文档。
  • 文档(Document):集合里的一条条记录。

对应关系可以理解为:数据库 ≈ 关系型里的「库」,集合 ≈ 「表」,文档 ≈ 「行」。

5.2 切换与创建数据库

MongoDB 不会在你 use 的一瞬间真建库。只有往里写了数据,库才真正存在。

// 切到(或准备)一个名为 shop 的库
use shop
test> use shop
switched to db shop

此时 show dbs 还看不到 shop,因为库还是空的。先插一条数据,库就被创建出来了:

// 首次写入,shop 库和 users 集合都会自动建好
db.users.insertOne({ name: "张伟", city: "北京" })

5.3 查看数据库与集合

// 列出所有已有数据的库
show dbs

// 列出当前库下的集合
show collections
test> show dbs
shop   8.00 KiB
test   40.0 KiB
Tip

show dbs 只显示「已写入数据」的库。刚 use 但没写数据的库不会出现,这是新手常见的疑惑。

5.4 显式创建集合

多数时候不用显式建集合,首次插入会自动创建。但想带上选项(如上限集合、校验规则)时,用 createCollection

// 显式建一个集合,可带选项
db.createCollection("orders")
test> db.createCollection("orders")
{ ok: 1 }

createCollection 还能设上限集合(capped)、校验规则等,进阶用法后面章节再展开。

5.5 删除集合与数据库

// 删除当前库下的某个集合
db.orders.drop()

// 删除当前整个数据库(危险,慎点)
db.dropDatabase()
Warning

db.dropDatabase() 会清空当前库全部数据且不可恢复。生产环境执行前一定确认 db.getName() 看自己在哪个库。

5.6 命名规则

库名和集合名有几点限制,踩过坑的人都记得:

  • 库名区分大小写,不能含空格、./\\0(空字符)。
  • 集合名不能以 system. 开头,也不能含 $(系统内部用)。
  • 名字长度有限制(库名约 64 字节以内)。
Note

据 MongoDB 8.3 官方文档,集合在创建时会被分配一个不可变的 UUID,在副本集各节点和分片上保持一致。

5.7 system 系统集合

system. 开头的集合是 MongoDB 自己用的,普通开发一般不直接动:

集合作用
system.namespaces历史命名空间信息(旧版)
system.indexes集合的索引定义
system.profile慢查询日志(开启 profiling 后)
system.users账号与角色(启用鉴权后)
Tip

别手动改 system.* 集合,容易把实例搞坏。要看索引用 db.集合.getIndexes(),比直接查 system.indexes 安全。