文档菜单
文档首页
/
MongoDB 手册
/ / /

convertToCapped

本页

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

警告

不要在分片集合上运行此命令

MongoDB 不支持 在分片集合上使用convertToCapped 命令。

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

此命令可在以下环境中托管的部署中使用

  • MongoDB Atlas:面向云中MongoDB部署的全托管服务

重要

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

该命令具有以下语法

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

该命令包含以下字段

字段
描述
convertToCapped
要转换的现有集合名称。
大小
固定集合的最大大小(以字节为单位)。
writeConcern
可选。一个文档,表示drop命令的写关注。省略以使用默认写关注。
comment

可选。用户提供的注释,附加到该命令。一旦设置,此注释将出现在以下位置的此命令记录旁边

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

convertToCapped 函数接受一个现有集合(<collection>),并将其转换为最大字节数由 size 参数(<capped size>)指定的 capped 集合。

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

  • MongoDB 以 自然顺序遍历原始集合中的文档,并将文档加载到新的 capped 集合中。

  • 如果为 capped 集合指定的 capped size 小于原始未 capped 集合的大小,那么 MongoDB 将根据插入顺序(或 先进先出 顺序)覆盖 capped 集合中的文档。

  • 内部,MongoDB 使用以下步骤转换集合

  • 此操作在整个操作期间保持数据库独占锁。其他锁定同一数据库的操作将在操作完成之前被阻塞。有关锁定数据库的操作,请参阅 一些常见客户端操作会锁定哪些锁?

警告

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

以下示例使用 db.collection.insertOne() 来创建一个 events 集合,并使用 db.collection.stats() 获取集合信息

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