MongoDB\Database::createCollection()
定义
MongoDB\Database::createCollection()
显式创建一个集合。
function createCollection( string $collectionName, array $options = [] ): array|object MongoDB 在您第一次在命令中引用集合时隐式创建集合,例如在向新集合插入文档时。您还可以使用
MongoDB\Database::createCollection()
方法,或使用 MongoDB shell 中的 db.createCollection() 显式创建一个具有特定选项的集合。
参数
$collectionName
: string- 要创建的集合名称。
$options
: array指定所需选项的数组。
注意
并非所有选项都在MongoDB的所有版本中可用。有关兼容性考虑,请参阅MongoDB手册中的create命令参考。
名称类型描述autoIndexId布尔值指定
false
以禁用在_id
字段上自动创建索引。重要:对于副本集,不要将
autoIndexId
设置为false
。已弃用自版本1.4: 此选项自MongoDB 3.2版本起已弃用。截至MongoDB 4.0,当创建复制的集合(即任何mongod模式下位于
local
数据库之外的集合)时,此选项不能为false
。capped布尔值要创建一个固定集合,指定true
。如果您指定true
,则必须在size
选项中设置最大大小。changeStreamPreAndPostImages文档clusteredIndex文档collation数组|对象comment混合encryptedFields文档描述可查询加密中加密字段的文档。如果省略,则将咨询
autoEncryption
驱动选项内的encryptedFieldsMap
选项。有关更多信息,请参阅MongoDB手册中的字段加密和可查询性。此选项自MongoDB 7.0版开始可用,如果用于较旧的服务器版本,则在执行时将引发异常。
新功能自版本1.13.
expireAfterSeconds整数flags整数仅适用于MMAPv1存储引擎,用于设置
usePowerOf2Sizes
和noPadding
标志。库提供了一些常量,您可以将它们与位或运算符结合使用来设置标志值
MongoDB\Operation\CreateCollection::USE_POWER_OF_2_SIZES
:1
MongoDB\Operation\CreateCollection::NO_PADDING
:2
默认为
1
。MongoDB 3.0及以后的版本忽略
usePowerOf2Sizes
标志。有关更多信息,请参阅collMod和db.createCollection()。indexOptionDefaults数组|对象允许用户在创建集合时指定索引的默认配置。
indexOptionDefaults
选项接受一个storageEngine
文档,其应采用以下形式{ <storage-engine-name>: <options> } 创建索引时指定的存储引擎配置将在复制期间验证并记录到oplog,以支持使用不同存储引擎的副本集成员。
max整数允许在限制集合中存储的最大文档数量。当size
选项值大于此限制时,将优先使用该值。如果限制集合在达到最大文档数量之前先达到size
限制,MongoDB会删除旧文档。如果您希望使用max
限制,请确保size
限制(对于限制集合是必需的)足以容纳最大数量的文档。maxTimeMS整数游标上处理操作的累计时间限制(毫秒)。MongoDB将在最早的下一个中断点处终止操作。
pipeline数组一个数组,包含要应用于由
viewOn
指定的集合或视图的聚合管道阶段。有关更多信息,请参阅创建命令文档。新功能自版本1.13.
session与操作关联的客户端会话。
新功能自版本1.3.
size整数指定限制集合的最大字节数。一旦限制集合达到其最大大小,MongoDB将删除旧文档以为新文档腾出空间。对于限制集合,必须指定size
选项,对于其他集合则忽略该选项。storageEngine数组|对象仅适用于WiredTiger存储引擎。
在创建集合时,允许用户根据集合指定存储引擎的配置。选项
storageEngine
的值应采用以下形式{ <storage-engine-name>: <options> } 在创建集合时指定的存储引擎配置将在复制过程中验证并记录到操作日志中,以支持使用不同存储引擎的副本集成员。
timeseries数组|对象typeMap数组应用于游标的类型映射,它决定了BSON文档如何转换为PHP值。默认为数据库的类型映射。
这将用于返回的命令结果文档。
validationAction字符串确定是否在无效文档上引发错误或只是警告违规情况,但允许插入无效文档。
重要:文档验证仅适用于由
validationLevel
确定的那些文档。validationAction
描述"error"
默认值。在写入发生之前,文档必须通过验证。否则,写入操作失败。"warn"
文档不需要通过验证。如果文档验证失败,则写入操作将记录验证失败。validationLevel字符串确定MongoDB在更新现有文档时如何严格地应用验证规则。
validationLevel
描述"关闭"
不进行插入或更新的验证。"严格"
默认。对所有插入和所有更新应用验证规则。"适度"
对插入和现有有效文档的更新应用验证规则。不对现有无效文档的更新应用规则。验证器数组|对象viewOn字符串创建视图时要使用的源集合或视图的名称。
该名称不是集合或视图的完整命名空间(即它不包含数据库名称)。视图必须在与源集合或视图相同的数据库中创建。
新功能自版本1.13.
writeConcern用于操作的写入关注点。默认为数据库的写入关注点。
返回值
包含创建命令的结果文档的数组或对象。
错误/异常
MongoDB\Exception\UnsupportedException
如果使用了所选服务器不支持选项(例如 collation
、readConcern
、writeConcern
)。
MongoDB\Exception\InvalidArgumentException
与参数或选项解析相关的错误。
MongoDB\Driver\Exception\RuntimeException 用于其他扩展级别的错误(例如连接错误)。
示例
以下示例在 test
数据库中创建了一个具有文档验证标准的 users
集合。
$db = (new MongoDB\Client)->test; $result = $db->createCollection('users', [ 'validator' => [ 'username' => ['$type' => 'string'], 'email' => ['$regex' => '@mongodb\.com$'], ], ]); var_dump($result);
输出将类似于
object(MongoDB\Model\BSONDocument)#11 (1) { ["storage":"ArrayObject":private]=> array(1) { ["ok"]=> float(1) } }
另请参阅
create 命令参考 MongoDB 手册