定义
db.createCollection(name, options)
显式地创建一个新的集合
因为 MongodbDB 在第一次引用时会隐式地创建这个 collection。这个方法主要是使用指定的 options 创建一个新的 collection。例如,你使用 db.createCollection() 创建一个 capped collection 或者创建一个新的集合 document validation 。
什么是 capped collection ?
一个固定大小的集合,自动覆盖最早的条目时达到最大值。什么是 document validation ?
创建一个对更新和插入都会进行验证的集合,若校验通过则执行,反之抛出异常
下面的是这个方法的原型
db.createCollection(<name>, { capped: <boolean>,
autoIndexId: <boolean>,
size: <number>,
max: <number>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document> } )
下面是参数
参数 | 类型 | 描述 |
---|---|---|
name | string | 创建集合的名称 |
options | document | 可选的。创建一个 capped collection 或预先分配存储空间的 collection 的配置选项 。 |
Examples
创建一个固定集合
固定集合有最大存储大小或文档数量,防止超出最大限制。所有固定集合必须指定一个最大存储大小也可以指定一个最大文档数量。如果 collection 达到最大存储大小限制之前达到最大文档数量 mongodb 会删除旧文档。
db.createCollection("log", { capped : true, size : 5242880, max : 5000 } )
这个命令创建名字为“log”,最大存储空间为 5m,最多 5000 个文档的集合
下面命令只是预先分配最大存储空间为 2G,不是固定大小的 people 集合
db.createCollection("people", { size: 2147483648 } )
详情请查看 Capped Collections
创建一个文档验证集合
建立新的 collection 并设置 validation。
指定 contact 表的 phone 字段只能是string,或者email必须匹配如下规则,或者 status 必须为 Unkown或者 Incomplete
db.createCollection( "contacts", {
validator: { $or:
[
{ phone: { $type: "string" } },
{ email: { $regex: /@mongodb\.com$/ } },
{ status: { $in: [ "Unknown", "Incomplete" ] } }
]
}
} )
这时候做这样的插入:
db.contacts.insert( { name: "xyz", status: "A" } )
返回是:
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
该特性是从 3.2 版本开始的,mongodb支持在insert 和update的时候validate documents了。(Validation rules are specified on a per-collection basis)有这3个参数:
- validator
- validationLevel:有off,strict,moderate级别(默认strict)
- validationAction:有error和warn(默认error)
可以通过db.createCollection()和collMod来设定。
使用 query operators 指定表达式
ps:这类操作不支持¥near, ¥ nearSphere, ¥ text, ¥where。¥ 换为美元符
为已有collection建立validation
```
db.runCommand( {
collMod: "contacts",
validator: { $or: [ { phone: { $exists: true } }, { email: { $exists: true } } ] }
} )
```
- 查看表的 validation 规则
```
db.getCollectionInfos( { name: "contacts" } )
```
- validation的限制:
不能对admin,local和config database的表做validation
不能对system.*表做validation
详情请查看 Document Validation
创建一个指定存储引擎的集合
当你使用 db.createCollection() 创建一个集合时,您可以指定与特定集合有关存储引擎配置选项
db.createCollection(
"users",
{ storageEngine: { wiredTiger: { configString: "<option>=<setting>" } } }
)
此创建创建一个名为“users”指定存储引擎为 wiredTiger 的集合。