MongoDB 5.0 时间序列集合、metaField 和“其他”字段

Buz*_*tti 5 time-series mongodb

timeseries 集合是使用 1 个必需参数创建的,timeField用于标识入站文档中的哪个字段包含将用于系列存储的 BSON 日期时间值。这metaField是可选的,MongoDB 文档是这样描述的:

The name of the field which contains metadata in each time series document.
The metadata in the specified field should be data that is used to label a
unique series of documents.
The metadata should rarely, if ever, change.
Run Code Online (Sandbox Code Playgroud)

这很好,但是通过声明 a 可以启用哪些特殊行为/功能metaField?当然支持查询,但在我的实验中,将数据放在metaField“包装器”中与仅具有额外的离散字段之间似乎没有区别,例如:

tscoll.insert({timestamp: dtval, meta: {area: "X", flavor: "Z"}, val: 444});
tscoll.find({"meta.flavor":"Z"});
or
tscoll.insert({timestamp: dtval, area: "X", flavor: "Z", val: 444});
tscoll.find({"flavor":"Z"});
Run Code Online (Sandbox Code Playgroud)

这是一种面向约定的设计指南,可以清楚地分离时间戳、收集的值(可以多个)和 1 个或多个附加数据吗?

sep*_*ehr 5

正如前面评论中提到的:

\n
\n

“元字段(如果存在)应该对时间序列数据进行分区,以便具有相同元数据的测量值随着时间的推移而相关。一段时间内具有公共元字段的测量值将在内部分组在一起,以消除存储中该字段的重复层。” \xe2\x80\x94

\n
\n

John Page 在他的介绍视频中解释并可视化了这种存储优化,并将其与未针对时间序列进行优化的数据库进行了比较。tldr 是:

\n

Mongodb 5时间序列元字段存储优化

\n