MongoDB 将文档存储在集合中。集合类似于关系数据库中的表。如果集合不存在,则 MongoDB 会在第一次存储该集合数据时创建该集合。
MongoDB 集合的命名规则
MongoDB 的集合就相当于 MySQL 的一个表 table,MySQL 列出的所有表都可以使用 show tables,MongoDB 可以使用 show collections 展示所有集合。
集合是一组文档,是无模式的,集合名称要求符合 UTF-8 标准的字符串,同时要遵循下表所示的注意事项。
序号 | 注意事项 |
---|---|
1 | 集合名不能是空串 |
2 | 不能含有空字符 |
3 | 不能以“system.”开头,这是系统集合保留的前缀 |
4 | 集合名不能含保留字符“$” |
对于分别部署在 Windows、Linux、UNIX 系统上的 MongoDB,集合的命名方式与数据库命名方式一致。
创建集合
MongoDB 集合的创建有显式和隐式两种方法。
显式创建集合可通过使用db.createCollection(name, options)
方法来实现,参数 name 指要创建的集合名称,options 是可选项,指定内存大小和索引等,下表描述 了 options 可使用的选项。
参数 | 类型 | 描述 |
---|---|---|
capped | Boolean | (可选)如果为 true,则启用封闭的集合。上限集合是固定大小的集合,它在达到其最大时自动覆盖其最旧的条目。如果指定 true,则还需要指定 size 参数 |
size | 数字 | (可选)指定上限集合的最大大小(以字节为单位)。如果 capped 为 true,那么还需要指定此字段的值 |
max | 数字 | (可选)指定上限集合中允许的最大文档数 |
注意:在插入文档时,MongoDB 首先检查上限集合 size字段的大小,然后检查 max 字段。
显式创建集合的一个例子:
> use myDB switched to db myDB > > show dbs admin 0.000GB config 0.000GB local 0.000GB > > db.createCollection("myColl") // 在myDB数据库中创建集合 myColl { "ok" : 1 }
在 MongoDB 中,当插入文档时,如果集合不存在,则 MongoDB 会隐式地自动创建集合,方法如下:
> db.myColl2.insert({"name":"tom"}) // myColl2是集合名 WriteResult({ "nInserted" : 1 }) > > show collections // 查看此时的所有集合 myColl myColl2
可以看到显示和隐式创建的集合...
之前提到过创建的数据库如果没有值的时候使用show dbs不会显示, 现在myDB数据库中已经有集合了, 再次查看
> show dbs admin 0.000GB config 0.000GB local 0.000GB myDB 0.000GB
下面是带有几个关键参数的 createCollection() 的用法:
创建固定集合 myColl3,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个。
> db.createCollection("myColl3", {capped:true, size:6142800, max:10000}) { "ok" : 1 } > > show collections myColl myColl2 myColl3