如何使用 Mongoose 创建时间序列集合

问题描述 投票:0回答:2

MongoDB v5.0 引入了一种新的集合类型,该类型针对存储和处理时间序列数据进行了优化 - 时间序列集合。我们如何使用 Mongoose 创建时间序列集合?

mongodb mongoose time-series
2个回答
12
投票

可以在定义

timeseries
时使用额外的
Schema
配置属性来完成。

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 将粒度设置为“”以进行高频摄取。手动设置粒度参数,通过优化时间序列集合中数据的内部存储方式来提高性能。要选择粒度值,请选择与连续传入测量之间的时间跨度最接近的匹配。


示例

想象一下您想要存储每小时的温度记录。在这种情况下,您可以通过以下方式定义您的架构:


const schema = Schema(
  {
    calculated_at: Date,
    temperature: Number,
    metadata: {
      sensorId: String,
      location: String
    }
  },
  {
    timeseries: {
      timeField: 'calculated_at',
      metaField: 'metadata',
      granularity: 'hours'
    }
  }
);

1
投票

可以在here找到使用猫鼬模式创建时间序列集合的官方文档。

© www.soinside.com 2019 - 2024. All rights reserved.