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

时间序列集合限制

在此页面上

  • 不支持的功能
  • 约束
  • 聚合 $out 和 $merge
  • distinct 命令
  • 文档大小
  • 更新和删除
  • 辅助索引
  • 固定大小集合
  • 修改集合类型
  • 修改 timeFieldmetaField
  • 修改 granularity
  • 分片
  • 分片管理命令
  • 事务
  • 快照隔离

时间序列集合不支持以下功能:

测量文档的最大大小为4 MB。

不能使用聚合管道阶段$out$merge从另一个集合输出或合并到时间序列集合。

由于时间序列集合的独特数据结构, MongoDB 无法有效地为不同值建立索引。避免在时间序列集合中使用 distinct 命令或 db.collection.distinct()辅助方法。取而代之的是,使用 $group 聚合按不同的值对文档进行分组。

例如,要在 meta.project = 10 的文档上查询不同的 meta.type 值,而不是:

db.foo.distinct("meta.type", {"meta.project": 10})

使用:

db.foo.createIndex({"meta.project":1, "meta.type":1})
db.foo.aggregate([{$match: {"meta.project": 10}},
{$group: {_id: "$meta.type"}}])

具体操作如下:

  1. meta.projectmeta.type 上创建复合索引并支持聚合。

  2. $match 阶段过滤 meta.project = 10 的文档。

  3. $group 阶段使用meta.type作为分组键,为每个唯一值输出一个文档。

时间序列集合中文档的最大大小为 4 MB。

从 MongoDB 5.0.5开始, 您可以执行某些删除和更新操作。

删除命令必须满足以下要求:

  • 该查询只能匹配 metaField 字段值。

  • 删除命令不得限制要删除的文档数量。您必须使用带有 justOne: falsedeleteMany() 方法的删除命令。

更新命令必须满足以下要求:

  • 该查询只能匹配 metaField 字段值。

  • 更新命令只能修改metaField字段值。

  • 必须使用仅包含更新操作符表达式的更新文档来执行更新。

  • 更新命令不得限制要更新的文档数量。您必须使用带有 multi: trueupdateMany() 方法的更新命令。

  • update 命令可能无法设置upsert: true。

要自动删除旧数据,请设置自动删除 (TTL)

要删除某个集合中的所有文档,请使用 drop() 方法删除该集合。

如果时间序列集合包含时间戳在 1970-01-01T00:00:00.000Z 之前或 2038-01-19T03:14:07.000Z 之后为 timeField 的文档,则 TTL“生存时间”功能不会从集合中删除任何文档。

有关 TTL 删除的详细信息,请参阅通过设置 TTL 使集合中的数据过期

您可以在指定为timeFieldmetaField的字段上添加二级索引。 如果metaField字段的字段值是文档,您还可以在该文档内的字段上创建二级索引。

metaField 不支持以下索引类型:

二级索引不支持以下索引属性:

时间序列集合无法创建为固定大小集合。

集合的类型只能在创建集合时设置:

要将数据从现有集合移动到时间序列集合,请将数据迁移到时间序列集合

您只能在创建集合时设置集合的 timeFieldmetaField 参数。创建后,这些参数无法修改。

设置granularity后,一次只能增加一个级别。 从"seconds""minutes"或从"minutes""hours" 。 不允许进行其他更改。 如果需要将granularity"seconds"更改为"hours" ,请先将granularity增加到"minutes" ,然后再增加到"hours"

从 MongoDB 5.0.6开始, 支持分片时间序列集合。 使用分片时间序列集合时,您无法修改分片时间序列集合的granularity

在 MongoDB 5.0.6 之前的版本中,您无法对时间序列集合进行分片。

您无法在分片的时间序列集合上运行分片管理命令。

无法在事务中写入时间序列集合

注意

在事务中支持读取时间序列集合。

只有在读取操作中未并发对集合进行删除或重命名操作的情况下,对具有读关注 "snapshot" 的时间序列集合进行的读取操作才能保证快照隔离。在同一命名空间上以不同的粒度设置重新创建时间序列集合不会产生完全的快照隔离。

后退

时间序列