如何通过Node.js创建MongoDB时间序列集合,是否有对应的可用npm包?
Node.js环境创建MongoDB时间序列集合的可用方案
你不需要额外安装第三方npm包,直接使用你当前已有的依赖即可实现需求,具体方案如下:
原生mongodb官方驱动
官方维护的mongodb包本身原生支持时间序列集合创建,操作示例如下:const { MongoClient } = require('mongodb'); async function createTSCollection() { const client = new MongoClient('mongodb://localhost:27017'); await client.connect(); const db = client.db('test_db'); await db.createCollection('device_metrics', { timeseries: { timeField: 'recordTime', // 存储时间戳的字段,必填 metaField: 'deviceInfo', // 存储维度元数据的字段,可选 granularity: 'minutes' // 数据时间粒度,可选值为seconds/minutes/hours }, expireAfterSeconds: 7776000 // 可选,配置数据自动过期时间,单位为秒 }); await client.close(); }Mongoose 内置支持
Mongoose 从v6.3.0版本开始已经内置时间序列集合支持,不需要额外安装其他插件或包,只需要在定义Schema时传入对应的配置即可,示例如下:const mongoose = require('mongoose'); const deviceMetricSchema = new mongoose.Schema({ recordTime: Date, deviceInfo: { deviceId: String, region: String }, cpuUsage: Number, memoryUsage: Number }, { timeseries: { timeField: 'recordTime', metaField: 'deviceInfo', granularity: 'minutes' }, expireAfterSeconds: 7776000 }); const DeviceMetric = mongoose.model('DeviceMetric', deviceMetricSchema);
注意:已经创建的普通集合无法直接转换为时间序列集合,需要新建时间序列集合后迁移存量数据。如果你使用的Mongoose版本低于v6.3.0,升级到对应版本以上即可使用该特性。
内容的提问来源于stack exchange,提问作者Gayathri Selvaraj
相关产品推荐
相关产品推荐

