【发布时间】:2022-03-15 11:55:30
【问题描述】:
MongoDB v5.0 引入了一种新的集合类型,该集合类型针对存储和使用时间序列数据进行了优化 - Time Series Collections。我们如何使用 Mongoose 创建时间序列集合?
【问题讨论】:
标签: mongodb mongoose time-series
MongoDB v5.0 引入了一种新的集合类型,该集合类型针对存储和使用时间序列数据进行了优化 - Time Series Collections。我们如何使用 Mongoose 创建时间序列集合?
【问题讨论】:
标签: mongodb mongoose time-series
在定义 Schema 时,可以通过额外的 timeseries 配置属性来完成。
const schema = Schema(
{
property_1: String,
property_2: String,
timestamp_property: Date,
metadata_property: Object,
{
timeseries: {
timeField: 'timestamp_property',
metaField: 'metadata_property',
granularity: 'hours',
},
}
);
timeField 是必需的。它是每个时间序列文档中包含日期的字段的名称。
metaField 是可选的。它是每个时间序列文档中包含元数据的字段的名称。指定字段中的元数据应该是用于标记一系列唯一文档的数据。元数据应该很少(如果有的话)改变。
granularity 是可选的。可能的值为“秒”、“分钟”和“小时”。默认情况下,MongoDB 将粒度设置为“秒”以进行高频摄取。手动设置粒度参数,通过优化时间序列集合中的数据在内部存储的方式来提高性能。要选择粒度值,请选择与连续传入测量之间的时间跨度最接近的匹配项。
假设您想要存储每小时的温度记录。在这种情况下,您可以通过以下方式定义您的架构:
onst schema = Schema(
{
temperature: Number,
calculated_at: Date,
metadata: {
sensorId: String,
location: String,
},
},
{
timeseries: {
timeField: 'calculated_at',
metaField: 'metadata',
granularity: 'hours',
},
}
);
【讨论】: