You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:57:01