Collection
- MongoDB 将文档存储在集合中
- 集合存储在 Database 中
- 集合类似于关系数据库(Mysql)中的表
- 如果集合不存在,则 MongoDB 会在第一次存储该集合数据时创建该集合
MongoDB 集合的命名规则
集合名称要求符合 UTF-8 标准的字符串
序号 | 注意事项 |
1 | 集合名不能是空串,如"" |
2 | 不能含有空字符 null |
3 | 不能以 system. 开头,这是系统集合保留的前缀 |
4 | 不能包含 $ |
5 | 命名空间最大为 255 bytes |
对于分别部署在 Windows、Linux、UNIX 系统上的 MongoDB,集合的命名方式与数据库命名方式一致
显示所有集合
show collections
创建集合
MongoDB 集合的创建有显式和隐式两种方法
显示创建
使用 db.createCollection(name, options) 方法来实现
- name:创建的集合名称
- options:可选项,指定内存大小和索引等
db.createCollection("mySet", {capped:true,size:6142800, max :10000 })
常用 options
参数 | 类型 | 描述 |
capped | Boolean | (可选)如果为 true,则启用封闭的集合。上限集合是固定大小的集合,它在达到其最大时自动覆盖其最旧的条目。如果指定 true,则还需要指定 size 参数 |
size | 数字 | (可选)指定上限集合的最大大小(以字节为单位)。如果 capped 为 true,那么还需要指定次字段的值 |
max | 数字 | (可选)指定上限集合中允许的最大文档数 |
注意:在插入文档时,MongoDB 首先检查上限集合 capped 字段,然后检查 max 字段
隐式创建
- 上面的 createCollection 方法,如果不需要指定 options 的时候,就没必要用显示创建
- 因为 MongoDB 会在集合首次存储数据时自动创建新的集合
db.myDB.insert( {"name": "tom"} )
文档验证
- 默认情况下,集合不要求存储的所有文档具有相同的数据结构
- 即单个集合中的不同文档不需要具有相同的字段集
- 并且一个字段的数据类型可以在集合内的文档中不同
- 总结: Bson 数据结构、字段都不需要必须一致
- 从 MongoDB 3.2 开始,可以在 update 和 insert 操作期间为集合强制执行文档验证规则(后面再展开讲)
修改文档数据结构
如果要改集合中文档的结构,可以添加新字段、删除现有字段、修改字段类型(后面再展开讲)
UUID
- 集合会被分配一个不可变的 UUID
- 集合 UUID 在副本集的所有成员和分片集群中的分片保持不变
查看集合的 uuid
> db.getCollectionInfos() [ { "name" : "myNewCollection1", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("3929147e-5030-4353-938c-3405487d330f") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]
扩展
关于 Collection 还有蛮多方法的,后面用到再展开讲解哦