I have per second data in a time series collection like this:
TimeStamp:2023-05-10T22:34:52.875+00:00
Heater2DutyC:0
CellPressure:0
_id: ObjectID('645c1e066b393fd1d7f1e9f8')
etc
I’m pulling data out using aggregating bucket like this:
BsonElement
{
"$bucket": {
"groupBy": "$TimeStamp",
"boundaries": [
ISODate("2023-05-24T21:44:09.222Z"),
ISODate("2023-05-24T21:44:10.222Z"),
ISODate("2023-05-24T21:44:11.222Z"),
ISODate("2023-05-24T21:44:12.222Z"),
ISODate("2023-05-24T21:44:13.222Z"),
ISODate("2023-05-24T21:44:14.222Z"),
ISODate("2023-05-24T21:44:15.222Z"),
ISODate("2023-05-24T21:44:16.222Z"),
ISODate("2023-05-24T21:44:17.222Z"),
ISODate("2023-05-24T21:44:18.222Z"),
ISODate("2023-05-24T21:44:19.222Z"),
ISODate("2023-05-24T21:44:20.222Z"),
ISODate("2023-05-24T21:44:21.222Z"),
ISODate("2023-05-24T21:44:22.222Z"),
ISODate("2023-05-24T21:44:23.222Z"),
ISODate("2023-05-24T21:44:24.222Z"),
ISODate("2023-05-24T21:44:25.222Z"),
ISODate("2023-05-24T21:44:26.222Z"),
ISODate("2023-05-24T21:44:27.222Z"),
ISODate("2023-05-24T21:44:28.222Z"),
ISODate("2023-05-24T21:44:29.222Z"),
ISODate("2023-05-24T21:44:30.222Z"),
ISODate("2023-05-24T21:44:31.222Z"),
ISODate("2023-05-24T21:44:32.222Z"),
ISODate("2023-05-24T21:44:33.222Z"),
ISODate("2023-05-24T21:44:34.222Z"),
ISODate("2023-05-24T21:44:35.222Z"),
ISODate("2023-05-24T21:44:36.222Z"),
ISODate("2023-05-24T21:44:37.222Z"),
ISODate("2023-05-24T21:44:38.222Z"),
ISODate("2023-05-24T21:44:39.222Z"),
ISODate("2023-05-24T21:44:40.222Z"),
ISODate("2023-05-24T21:44:41.222Z"),
ISODate("2023-05-24T21:44:42.222Z"),
ISODate("2023-05-24T21:44:43.222Z"),
ISODate("2023-05-24T21:44:44.222Z"),
ISODate("2023-05-24T21:44:45.222Z"),
ISODate("2023-05-24T21:44:46.222Z"),
ISODate("2023-05-24T21:44:47.222Z"),
ISODate("2023-05-24T21:44:48.222Z"),
ISODate("2023-05-24T21:44:49.222Z"),
ISODate("2023-05-24T21:44:50.222Z"),
ISODate("2023-05-24T21:44:51.222Z"),
ISODate("2023-05-24T21:44:52.222Z"),
ISODate("2023-05-24T21:44:53.222Z"),
ISODate("2023-05-24T21:44:54.222Z"),
ISODate("2023-05-24T21:44:55.222Z"),
ISODate("2023-05-24T21:44:56.222Z"),
ISODate("2023-05-24T21:44:57.222Z"),
ISODate("2023-05-24T21:44:58.222Z"),
ISODate("2023-05-24T21:44:59.222Z"),
ISODate("2023-05-24T21:45:00.222Z"),
ISODate("2023-05-24T21:45:01.222Z"),
ISODate("2023-05-24T21:45:02.222Z"),
ISODate("2023-05-24T21:45:03.222Z"),
ISODate("2023-05-24T21:45:04.222Z"),
ISODate("2023-05-24T21:45:05.222Z"),
ISODate("2023-05-24T21:45:06.222Z"),
ISODate("2023-05-24T21:45:07.222Z"),
ISODate("2023-05-24T21:45:08.222Z"),
ISODate("2023-05-24T21:45:09.222Z"),
ISODate("2023-05-24T21:45:10.222Z")
],
"default": "overflow",
"output": {
"count": {
"$sum": 1
},
"Average": {
"$avg": "$ConcentrationNO2"
},
"TimeStamp": {
"$push": "$TimeStamp"
}
}
}
}
Except I can have up to 400 aggregations.
The problem is that in tests (I’m hoping to switch from MS SQL Server) the data retrieval is slower in MongoDB than in SQL Server. This is especially noticeable as the amount of aggregation increases.
My MongoDB Collection is defined as a time series with second intervals (data is in second intervals ± a few ms).
{
"name": "crdsperiodic",
"type": "timeseries",
"options": {
"expireAfterSeconds": 15552000,
"timeseries": {
"timeField": "TimeStamp",
"granularity": "seconds",
"bucketMaxSpanSeconds": 3600
}
}
}
Any idea what’s going on here?
Chris