时间序列快速入门
本快速入门介绍了如何使用MongoDB Atlas或自托管部署来配置、创建和查询时间序列集合。
所需时间:30 分钟
步骤
设置您的 Atlas 集群。
如果您还没有Atlas 集群,请创建一个免费的 M0 集群。要学习;了解有关创建Atlas 集群的更多信息,请参阅创建集群。
注意
Project Data Access Admin
如果您使用的是现有集群,则必须对Atlas项目拥有 或更高访问权限。如果创建新集群,则默认拥有必要的权限。
每个项目只能创建一个
M0
免费集群。在通过工具访问数据下,单击 Shell。
如果尚未安装,请按照提供的步骤下载并安装
mongosh
。复制连接字符串并单击 Done。
打开新的终端窗口并连接到您的部署。
使用mongosh
连接到您的自托管或Atlas部署。示例:
mongosh "mongodb+srv://my-test-cluster.1twap.mongodb.net/" --apiVersion 1 --username <user>
创建一个空的时间序列集合。
设置
timeField
、metaField
和granularity
:timeseries: { timeField: "date", metaField: "ticker", granularity: "seconds" } 或者指定自定义粒度:
6.3 版本中的新功能。
timeseries: { timeField: "date", metaField: "ticker", granularity: "seconds", bucketMaxSpanSeconds: "300", bucketRoundingSeconds: "300" } 使用
db.createCollection()
方法创建集合:db.createCollection( "stocks", { timeseries: { timeField: "date", metaField: "ticker", granularity: "seconds" } }) 这将创建一个名为
stocks
的空时间序列集合。
添加示例文档。
运行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 查看示例数据。
查询数据。
您可以像查询任何其他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")} });
安装依赖项。
有关详细说明,请参阅先决条件。
如果使用 Homebrew ,则可以在终端中运行以下命令:
brew install mongodb-atlas-cli 安装 Docker。
Docker需要网络连接来拉取和缓存MongoDB映像。
对于 macOS 或 Windows,请安装 Docker 桌面 v4.31+。
对于 Linux,请安装 Docker Engine v27.0+。
对于 RHEL,您还可以使用 Podman v5.0 +。
设置本地 Atlas 部署。
如果没有 Atlas 账户,请在终端运行
atlas setup
或创建新帐户。运行
atlas deployments setup
并按照提示创建本地部署。当系统提示连接到部署时,选择skip
。有关详细说明,请参阅创建本地 Atlas 部署。
安装mongosh
。
打开新的终端窗口并连接到您的部署。
使用mongosh
连接到您的自托管或Atlas部署。示例:
mongosh "mongodb+srv://my-test-cluster.1twap.mongodb.net/" --apiVersion 1 --username <user>
创建一个空的时间序列集合。
设置
timeField
、metaField
和granularity
:timeseries: { timeField: "date", metaField: "ticker", granularity: "seconds" } 或者指定自定义粒度:
6.3 版本中的新功能。
timeseries: { timeField: "date", metaField: "ticker", granularity: "seconds", bucketMaxSpanSeconds: "300", bucketRoundingSeconds: "300" } 使用
db.createCollection()
方法创建集合:db.createCollection( "stocks", { timeseries: { timeField: "date", metaField: "ticker", granularity: "seconds" } }) 这将创建一个名为
stocks
的空时间序列集合。
添加示例文档。
运行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 查看示例数据。
查询数据。
您可以像查询任何其他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")} });
安装mongosh
。
打开新的终端窗口并连接到您的部署。
使用mongosh
连接到您的自托管或Atlas部署。示例:
mongosh "mongodb+srv://my-test-cluster.1twap.mongodb.net/" --apiVersion 1 --username <user>
创建一个空的时间序列集合。
设置
timeField
、metaField
和granularity
:timeseries: { timeField: "date", metaField: "ticker", granularity: "seconds" } 或者指定自定义粒度:
6.3 版本中的新功能。
timeseries: { timeField: "date", metaField: "ticker", granularity: "seconds", bucketMaxSpanSeconds: "300", bucketRoundingSeconds: "300" } 使用
db.createCollection()
方法创建集合:db.createCollection( "stocks", { timeseries: { timeField: "date", metaField: "ticker", granularity: "seconds" } }) 这将创建一个名为
stocks
的空时间序列集合。
添加示例文档。
运行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 查看示例数据。
查询数据。
您可以像查询任何其他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> }
学习总结
本快速入门重点介绍如何创建新的时间序列集合。由于时间序列集合针对时间数据进行了优化,因此其性能在很大程度上取决于创建时的配置方式。有关详细信息,请参阅时间序列集合注意事项。
后续步骤
了解详情
要学习;了解有关MongoDB6.3 及更高版本中的自定义分桶参数的更多信息,请参阅使用自定义分桶参数。