@toc
集合管理
MongoDB中的集合主要用户保存文档,类似于关系型数据库中的表格(Table)。
集合名称规则
在MongoDB中创建集合时,首先需要定义集合的名称。集合的名称有以下5个规则:
- 集合名称的第一个字符必须是字母
- 集合名称不可以包含
$
符号,因为$
是MongoDB中的系统保留字符 - 集合名称中不可以包含空格
- 集合名称不可以用
system.
开头 - 集合名称不可以超过128字符
集合基本操作
创建集合
创建集合有两种方法
- 直接插入文档
在插入文档时,如果集合不存在,会自动创建集合。参考 插入文档的特点 - 使用
db.createCollection()
db.createCollection(name, options)
参数说明 字段 |
类型 | 说明 |
---|---|---|
capped | boolean | 是否为固定集合,设置为true表示是固定集合,需要搭配size设置集合大小 |
size | number | 固定集合的大小,搭配capped使用。当文档超过设定的大小时,会自动删除旧文档为新文档腾出空间 |
max | number | 固定集合可存放的文档数。当文档数超过设置的大小时,MongoDB自动删除旧文档。 |
storageEngine | document | 集合的存储引擎 |
validator | document | 数据校验 |
validationLevel | string | 数据校验对现有文档的严格程度 |
validationAction | string | 数据校验如何处理违反校验规则的文档 |
indexOptionDefaults | document | 索引使用的存储引擎 |
数据校验相关配置参考 数据校验
删除集合
db.collection.drop()
示例:删除Product集合db.Product.drop()
查询集合
查询当前数据库中有哪些集合,可以使用以下两种方法:show collections
show tables
固定集合
固定集合,就是一个拥有固定大小的集合。这种集合会依照文档的顺序插入数据,并将插入的数据写入磁盘。如果在插入数据时发现固定集合超过了分配给它的空间,则会删除旧文档来释放空间,让新的文档可以插入。
特点和限制
固定集合的特点
- 写入的速度非常快
- 在查询有顺序性质的文档时,查询速度会很快
- 可以在写入新数据时删除最旧的数据
- 可用在记录日志信息的应用中
固定集合的限制
- 创建后不能更改固定大小。如果要更改大小,必须先删除固定集合再重新创建
- 不能使用
delete
集合删除固定集合中的文档,只能使用drop
指定删除固定集合中的所有文档 - 固定集合不能被分片
- 不能将聚合中的
$out
的结果接入到固定集合 - 固定集合与TTL索引不兼容
固定集合操作
创建固定集合
db.createCollection()
创建新的固定集合db.runCommand()
将已经存在的普通集合转换成固定集合
示例# 创建一个名称为product的固定集合,大小为200000 byte,可存放的文档数量最多为2000 db.createCollection("product",{capped:true,size:200000,max:2000})
将foodColor集合更改为固定集合,大小为50000 byte,最多存放500个文档
db.runCommand({"convertToCapped":"foodColor",size:50000,max:500})
### 查询集合是否为固定集合
[`db.collection.isCapped()`](https://docs.mongodb.com/v4.4/reference/method/db.collection.isCapped/)
示例:查询product集合是否为固定集合
`db.product.isCapped()`
结果true表示是固定集合,false不是固定集合
### 查询集合的详细信息
`db.getCollectionInfos({name:"product"})`