Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

convertToCapped

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 例子
convertToCapped

警告

不要对分片collection运行此命令

MongoDB支持对分片集合执行 convertToCapped命令。

convertToCapped命令将同一数据库中现有的非固定固定大小集合转换为固定固定大小集合

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

重要

无服务器实例不支持此命令。 有关更多信息,请参阅不支持的命令。

该命令具有以下语法:

db.runCommand(
{
convertToCapped: <collection>,
size: <capped size>,
writeConcern: <document>,
comment: <any>
}
)

该命令接受以下字段:

字段
说明

convertToCapped

要转换的现有collection的名称。

size

固定大小集合的最大大小(以字节为单位)。

writeConcern

可选。 表达 命令 写关注(write concern) drop的文档。省略以使用默认的写关注(write concern)。

comment

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

convertToCapped获取现有集合( <collection> ) 并将其转换为固定大小固定大小集合,其最大大小以字节为单位,由size参数 ( <capped size> ) 指定。

在转换过程中,convertToCapped 命令表现出以下行为:

  • MongoDB 按存储顺序遍历原始collection中的文档,并将这些文档加载到新的固定大小集合中。

  • 如果为固定大小集合指定的capped size小于原始非固定大小collection的大小,则 MongoDB 将根据插入顺序或先进先出顺序覆盖固定大小集合中的文档。

  • 在内部,为了转换collection,MongoDB 使用以下过程

  • 此功能会在操作期间保持数据库独占锁。锁定同一数据库的其他操作将被阻止,直到该操作完成。请参阅某些常见客户端操作会采用哪些锁?锁定数据库的操作。

警告

convertToCapped 不会在新集合上重新创建原始集合中的索引,但 _id 字段上的索引除外。如果需要此集合的索引,您需要在转换完成后创建这些索引。

以下示例使用db.collection.insertOne() events创建collection,并使用db.collection.stats() 获取有关该collection的信息:

db.events.insertOne( { click: 'button-1', time: new Date() } )
db.events.stats()

MongoDB 将返回以下内容:

{
"ns" : "test.events",
...
"capped" : false,
...
}

要将events集合转换为固定大小集合并查看更新的集合信息,请运行以下命令:

db.runCommand( { convertToCapped: 'events', size: 8192 } )
db.events.stats()

MongoDB 将返回以下内容:

{
"ns" : "test.events",
...
"capped" : true,
"max" : NumberLong("9223372036854775807"),
"maxSize" : 8192,
...
}

convertToCapped 不会在新集合上重新创建原始集合中的索引,但 _id 字段上的索引除外。如果需要此集合的索引,您需要在转换完成后创建这些索引。

提示

另请参阅:

后退

compactStructuredEncryptionData