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 还有蛮多方法的,后面用到再展开讲解哦