create
¶明确创建一个集合或视图。
注意
此命令创建的视图不引用实例化视图。有关按需实例化视图的讨论,请参见
$merge
。
create
具有以下形式:
从MongoDB 4.2开始
MongoDB中删除MMAPv1存储引擎和MMAPv1特定选项flags
的create
。
create
具有以下字段:
领域 | 类型 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
create |
串 | 新集合或视图的名称。请参阅 命名限制。 | ||||||||
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()
方法和该
db.createView()
方法包装create
命令。
如果部署强制执行
身份验证/授权,则
create
需要以下特权:
所需特权 | |
---|---|
创建一个无上限的集合 |
|
创建封顶的收藏 |
|
创建一个视图 |
但是,如果用户具有 |
readWrite
在数据库上具有内置角色的用户具有运行列出的操作所需的特权。无论是
创建一个用户与所需的角色或角色授予现有的用户。
注意
此命令创建的视图不引用实例化视图。有关按需实例化视图的讨论,请参见
$merge
。
在版本4.2中进行了更改。
视图定义pipeline
不能包含$out
或$merge
阶段。如果视图定义包括嵌套管道(例如,视图定义包括
$lookup
或$facet
阶段),则此限制也适用于嵌套管道。
或如果指定排序规则:
例如,给定一个survey
具有以下文档的集合:
以下操作创建一个managementRatings
与视图
_id
,feedback.management
和department
字段:
重要
视图定义是公共的;即db.getCollectionInfos()
,explain
对视图的操作将包括定义视图的管道。因此,请避免在视图定义中直接引用敏感字段和值。
也可以看看
您可以在集合或 视图级别指定排序规则。例如,以下操作将创建一个集合,为该集合指定排序规则(有关排序规则字段的说明,请参阅排序规则文档):
支持排序规则的索引和操作将使用此排序规则,除非它们明确指定其他排序规则。例如,将以下文档插入myColl
:
以下操作使用集合的归类:
该操作按以下顺序返回文档:
使用简单二进制排序规则(即没有特定的排序规则集)的集合上的相同操作将按以下顺序返回文档:
使用创建集合时,可以指定特定于集合的存储引擎配置选项
db.createCollection()
。请考虑以下操作:
此操作将创建一个users
具有特定配置字符串的新集合,MongoDB会将其传递给
wiredTiger
存储引擎。有关
特定选项,请参见WiredTiger的收集级别选项文档wiredTiger
。