参考 > 参考 > mongo Shell方法 > 数据库方法 > db.createCollection()
db.
createCollection
(名称,选项)¶创建一个新的集合或视图。有关视图,请参见db.createView()
。
由于在命令中首次引用集合时,MongoDB会隐式创建一个集合,因此此方法主要用于创建使用特定选项的新集合。例如,您用于
db.createCollection()
创建一个有上限的集合,或创建一个使用文档验证的新集合
。
db.createCollection()
是数据库命令的包装create
。
该db.createCollection()
方法具有以下原型形式:
从MongoDB 4.2开始
MongoDB中删除MMAPv1存储引擎和MMAPv1特定选项paddingFactor
,paddingBytes
,preservePadding
的db.createCollection()
。
该db.createCollection()
方法具有以下参数:
参数 | 类型 | 描述 |
---|---|---|
name |
串 | 要创建的集合的名称。请参阅 命名限制。 |
options |
文献 | 可选的。用于创建有上限的集合,用于在新集合中预分配空间或用于创建视图的配置选项。 |
该options
文档包含以下字段:
领域 | 类型 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
capped |
布尔值 | 可选的。要创建一个有上限的集合,请指定true 。如果指定true ,则还必须在size 字段中设置最大大小。 |
||||||||
autoIndexId |
布尔值 | 可选的。指定 重要 在MongoDB中4.0开始,你不能设置选项 从3.2版开始不推荐使用。 |
||||||||
size |
数 | 可选的。指定上限集合的最大大小(以字节为单位)。一旦上限集合达到最大大小,MongoDB就会删除较旧的文档以为新文档腾出空间。size 上限集合是必填字段,其他集合则忽略该字段。 |
||||||||
max |
数 | 可选的。上限集合中允许的最大文档数。该
size 限制优先于此限制。如果有上限的集合size 在达到最大文档数之前达到限制,则MongoDB会删除旧文档。如果您想使用该max 限制,请确保size 有上限的收集所需的限制足以容纳最大数量的文档。 |
||||||||
storageEngine |
文献 | 可选的。仅适用于WiredTiger存储引擎。 允许用户在创建集合时基于每个集合为存储引擎指定配置。 当创建集合进行验证,并记录到存储引擎配置中指定OPLOG复制到支持副本集与使用不同的存储引擎成员中。 |
||||||||
validator |
文献 | 可选的。允许用户为集合指定验证规则或表达式。有关更多信息,请参见模式验证。 3.2版中的新功能。 该 注意
|
||||||||
validationLevel |
串 | 可选的。确定在更新过程中MongoDB对验证规则应用到现有文档的严格程度。 3.2版中的新功能。
|
||||||||
validationAction |
串 | 可选的。确定是 3.2版中的新功能。 重要 文件的验证仅适用于由
|
||||||||
indexOptionDefaults |
文献 | 可选的。允许用户在创建集合时为索引指定默认配置。 该 创建索引时进行验证,并记录到存储引擎配置中指定OPLOG复制到支持副本集与使用不同的存储引擎成员中。 3.2版中的新功能。 |
||||||||
viewOn |
串 | 从中创建视图的源集合或视图的名称。名称不是集合或视图的完整名称空间;即不包含数据库名称,并且暗示与要创建的视图相同的数据库。您必须在与源集合相同的数据库中创建视图。 另请参阅 3.4版的新功能。 |
||||||||
pipeline |
数组 | 由聚合管道阶段组成的数组。 视图定义 视图定义是公共的;即 另请参阅 3.4版的新功能。 |
||||||||
collation |
文献 | 指定集合的默认排序规则。 归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。 排序规则选项具有以下语法: 指定排序规则时,该 如果您在集合级别指定排序规则:
如果没有为集合或操作指定排序规则,则MongoDB使用先前版本中使用的简单二进制比较进行字符串比较。 对于集合,您只能在集合创建期间指定排序规则。设置后,您将无法修改集合的默认排序规则。 有关示例,请参见指定整理。 3.4版的新功能。 |
||||||||
writeConcern |
文献 | 可选的。表示 该操作的写关注点的文档。省略使用默认的写关注。 当分片群集上发出, |
如果部署强制执行
身份验证/授权,则
db.createCollection()
需要以下特权:
所需特权 | |
---|---|
创建一个无上限的集合 |
|
创建封顶的收藏 |
|
创建一个视图 |
但是,如果用户具有 |
readWrite
在数据库上具有内置角色的用户具有运行列出的操作所需的特权。无论是
创建一个用户与所需的角色或角色授予现有的用户。
在版本4.2中进行了更改。
db.createCollection()
在操作期间获得对指定集合或视图的排他锁。集合上的所有后续操作都必须等到db.createCollection()
释放锁为止
。db.createCollection()
通常会短暂持有此锁。
创建视图需要system.views
在数据库中的集合上获得额外的排他锁。该锁将阻止在数据库中创建或修改视图,直到命令完成。
在MongoDB 4.2之前的版本中,db.createCollection()
获得了对父数据库的排他锁,从而阻止了对数据库及其
所有集合的所有操作,直到操作完成。
封顶的集合具有最大大小或文档数量,可防止其增长到最大阈值以上。所有设置上限的集合必须指定最大大小,并且还可以指定最大文档数。如果集合在达到最大文档数之前达到最大大小限制,则MongoDB会删除较旧的文档。考虑以下示例:
此命令将创建一个集合log
,该集合的最大大小为5 MB,最多5000个文档。
有关上限集合的更多信息,请参见上限集合。
3.2版中的新功能。
具有验证的集合将每个插入或更新的文档与validator
选项中指定的条件进行比较。取决于validationLevel
和validationAction
,如果MongoDB不符合指定条件,它将返回警告或拒绝插入或更新文档。
以下示例contacts
使用JSON模式验证器创建一个集合:
注意
MongoDB 3.6添加了$jsonSchema
运算符以支持JSON模式验证。
使用验证器后,以下插入操作将使验证失败:
该方法在中返回错误WriteResult
:
有关更多信息,请参见模式验证。要查看集合的验证规范,请使用
db.getCollectionInfos()
方法。
3.4版的新功能。
归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。
您可以在集合或 视图级别指定排序规则。例如,以下操作将创建一个集合,为该集合指定排序规则(有关排序规则字段的说明,请参阅排序规则文档):
支持排序规则的索引和操作将使用此排序规则,除非它们明确指定其他排序规则。例如,将以下文档插入myColl
:
以下操作使用集合的归类:
该操作按以下顺序返回文档:
使用简单二进制排序规则(即没有特定的排序规则集)的集合上的相同操作将按以下顺序返回文档:
也可以看看
使用创建集合时,可以指定特定于集合的存储引擎配置选项
db.createCollection()
。请考虑以下操作:
此操作将创建一个users
具有特定配置字符串的新集合,MongoDB会将其传递给
wiredTiger
存储引擎。有关
特定选项,请参见WiredTiger的收集级别选项文档wiredTiger
。