Docs 菜单
Docs 主页
/
MongoDB Manual
/

时间序列快速入门

在此页面上

  • 步骤
  • 样本数据
  • 学习总结
  • 后续步骤
  • 了解详情

本快速入门介绍了如何使用MongoDB Atlas或自托管部署来配置、创建和查询时间序列集合。

所需时间:30 分钟

1
  1. 创建免费的 Atlas 帐户或登录现有帐户。

  2. 如果您还没有Atlas 集群,请创建一个免费的 M0 集群。要学习;了解有关创建Atlas 集群的更多信息,请参阅创建集群。

    注意

    每个项目只能创建一个M0 免费集群。

  3. 在左侧边栏中,点击概览 。选择您的集群,然后单击Connect

  4. 在通过工具访问数据下,单击 Shell

    如果尚未安装,请按照提供的步骤下载并安装mongosh

  5. 复制连接字符串并单击 Done

2

使用mongosh 连接到您的自托管或Atlas部署。示例:

mongosh "mongodb+srv://my-test-cluster.1twap.mongodb.net/" --apiVersion 1
--username <user>
3
use timeseries

这将创建并切换到一个空的“时间序列”数据库。

4

注意

此练习使用股票报价机示例数据。date 字段存储时间数据,ticker 字段标识股票。

  1. 设置 timeFieldmetaFieldgranularity

    timeseries: {
    timeField: "date",
    metaField: "ticker",
    granularity: "seconds"
    }

    或者指定自定义粒度:

    6.3 版本中的新功能

    timeseries: {
    timeField: "date",
    metaField: "ticker",
    granularity: "seconds",
    bucketMaxSpanSeconds: "300",
    bucketRoundingSeconds: "300"
    }
  2. 使用db.createCollection() 方法创建集合:

    db.createCollection(
    "stocks",
    {
    timeseries: {
    timeField: "date",
    metaField: "ticker",
    granularity: "seconds"
    }
    })

    这将创建一个名为 stocks 的空时间序列集合。

5

运行db.collection.insertMany() 方法以将以下示例文档添加到集合中:

db.stocks.insertMany([
{ ticker: "MDB", date: ISODate("2021-12-18T15:59:00.000Z"), close: 252.47, volume: 55046.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:58:00.000Z"), close: 252.93, volume: 44042.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:57:00.000Z"), close: 253.61, volume: 40182.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:56:00.000Z"), close: 253.63, volume: 27890.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:55:00.000Z"), close: 254.03, volume: 40270.00}
])

如果您在Atlas上运行MongoDB ,则可以单击 Browse collections 查看示例数据。

6

您可以像查询任何其他MongoDB集合一样查询时间序列集合。有关详细信息,请参阅关于查询时间序列数据。

时间序列数据的常见查询是查询 metaField 以获取单个时间序列的数据,或对 timeField 使用范围查询以获取给定时间跨度的数据。

要在 metaField 中查询单个时间序列,请执行以下操作:

db.stocks.find( { ticker: "MDB" } )

要在 timeField 中查询时间跨度,请执行以下操作:

db.stocks.find({ date : {
$gte : ISODate("2021-12-18T15:50:00.000Z"),
$lte : ISODate("2021-12-18T15:56:00.000Z")}
});
1

有关详细说明,请参阅先决条件。

  1. 安装Atlas CLI。

    如果使用 Homebrew ,则可以在终端中运行以下命令:

    brew install mongodb-atlas-cli

    有关其他操作系统上的安装说明,请参阅安装Atlas CLI

  2. 安装 Docker。

    Docker需要网络连接来拉取和缓存MongoDB映像。

2
  1. 如果没有 Atlas 账户,请在终端运行 atlas setup创建新帐户

  2. 运行 atlas deployments setup 并按照提示创建本地部署。当系统提示连接到部署时,选择 skip

    有关详细说明,请参阅创建本地 Atlas 部署。

3
4

使用mongosh 连接到您的自托管或Atlas部署。示例:

mongosh "mongodb+srv://my-test-cluster.1twap.mongodb.net/" --apiVersion 1
--username <user>
5
use timeseries

这将创建并切换到一个空的“时间序列”数据库。

6

注意

此练习使用股票报价机示例数据。date 字段存储时间数据,ticker 字段标识股票。

  1. 设置 timeFieldmetaFieldgranularity

    timeseries: {
    timeField: "date",
    metaField: "ticker",
    granularity: "seconds"
    }

    或者指定自定义粒度:

    6.3 版本中的新功能

    timeseries: {
    timeField: "date",
    metaField: "ticker",
    granularity: "seconds",
    bucketMaxSpanSeconds: "300",
    bucketRoundingSeconds: "300"
    }
  2. 使用db.createCollection() 方法创建集合:

    db.createCollection(
    "stocks",
    {
    timeseries: {
    timeField: "date",
    metaField: "ticker",
    granularity: "seconds"
    }
    })

    这将创建一个名为 stocks 的空时间序列集合。

7

运行db.collection.insertMany() 方法以将以下示例文档添加到集合中:

db.stocks.insertMany([
{ ticker: "MDB", date: ISODate("2021-12-18T15:59:00.000Z"), close: 252.47, volume: 55046.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:58:00.000Z"), close: 252.93, volume: 44042.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:57:00.000Z"), close: 253.61, volume: 40182.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:56:00.000Z"), close: 253.63, volume: 27890.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:55:00.000Z"), close: 254.03, volume: 40270.00}
])

如果您在Atlas上运行MongoDB ,则可以单击 Browse collections 查看示例数据。

8

您可以像查询任何其他MongoDB集合一样查询时间序列集合。有关详细信息,请参阅关于查询时间序列数据。

时间序列数据的常见查询是查询 metaField 以获取单个时间序列的数据,或对 timeField 使用范围查询以获取给定时间跨度的数据。

要在 metaField 中查询单个时间序列,请执行以下操作:

db.stocks.find( { ticker: "MDB" } )

要在 timeField 中查询时间跨度,请执行以下操作:

db.stocks.find({ date : {
$gte : ISODate("2021-12-18T15:50:00.000Z"),
$lte : ISODate("2021-12-18T15:56:00.000Z")}
});
1

如果您运行的是自管理部署,请按照您的MongoDB版本和平台的安装说明进行操作。

2
3

使用mongosh 连接到您的自托管或Atlas部署。示例:

mongosh "mongodb+srv://my-test-cluster.1twap.mongodb.net/" --apiVersion 1
--username <user>
4
use timeseries

这将创建并切换到一个空的“时间序列”数据库。

5

注意

此练习使用股票报价机示例数据。date 字段存储时间数据,ticker 字段标识股票。

  1. 设置 timeFieldmetaFieldgranularity

    timeseries: {
    timeField: "date",
    metaField: "ticker",
    granularity: "seconds"
    }

    或者指定自定义粒度:

    6.3 版本中的新功能

    timeseries: {
    timeField: "date",
    metaField: "ticker",
    granularity: "seconds",
    bucketMaxSpanSeconds: "300",
    bucketRoundingSeconds: "300"
    }
  2. 使用db.createCollection() 方法创建集合:

    db.createCollection(
    "stocks",
    {
    timeseries: {
    timeField: "date",
    metaField: "ticker",
    granularity: "seconds"
    }
    })

    这将创建一个名为 stocks 的空时间序列集合。

6

运行db.collection.insertMany() 方法以将以下示例文档添加到集合中:

db.stocks.insertMany([
{ ticker: "MDB", date: ISODate("2021-12-18T15:59:00.000Z"), close: 252.47, volume: 55046.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:58:00.000Z"), close: 252.93, volume: 44042.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:57:00.000Z"), close: 253.61, volume: 40182.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:56:00.000Z"), close: 253.63, volume: 27890.00},
{ ticker: "MDB", date: ISODate("2021-12-18T15:55:00.000Z"), close: 254.03, volume: 40270.00}
])

如果您在Atlas上运行MongoDB ,则可以单击 Browse collections 查看示例数据。

7

您可以像查询任何其他MongoDB集合一样查询时间序列集合。有关详细信息,请参阅关于查询时间序列数据。

时间序列数据的常见查询是查询 metaField 以获取单个时间序列的数据,或对 timeField 使用范围查询以获取给定时间跨度的数据。

要在 metaField 中查询单个时间序列,请执行以下操作:

db.stocks.find( { ticker: "MDB" } )

要在 timeField 中查询时间跨度,请执行以下操作:

db.stocks.find({ date : {
$gte : ISODate("2021-12-18T15:50:00.000Z"),
$lte : ISODate("2021-12-18T15:56:00.000Z")}
});

此快速入门将创建具有以下文档结构的 stocks时间序列集合。

{
_id: ObjectId(...),
ticker: <string>,
date: ISODate(...),
close: <double>,
volume: <double>
}

本快速入门重点介绍如何创建新的时间序列集合。由于时间序列集合针对时间数据进行了优化,因此其性能在很大程度上取决于创建时的配置方式。有关详细信息,请参阅时间序列集合注意事项。

后退

时间序列