“文档” 菜单
文档首页
/
MongoDB Manual
/ / /

convertToCapped

在此页面上

  • 定义
  • 语法
  • 例子
convertToCapped

警告

不要对分片collection运行此命令

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

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

该命令具有以下语法:

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
创建 →

在此页面上