db.createCollection(
|
"weather",
|
{
|
timeseries: {
|
timeField: "timestamp",
|
metaField: "metadata",
|
granularity: "hours"
|
}
|
}
|
)
|
|
db.weather.insertMany( [
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-18T00:00:00.000Z"),
|
"temp": 12
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-18T04:00:00.000Z"),
|
"temp": 11
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-18T08:00:00.000Z"),
|
"temp": 11
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-18T12:00:00.000Z"),
|
"temp": 12
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-18T16:00:00.000Z"),
|
"temp": 16
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-18T20:00:00.000Z"),
|
"temp": 15
|
}, {
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-19T00:00:00.000Z"),
|
"temp": 13
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-19T04:00:00.000Z"),
|
"temp": 12
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-19T08:00:00.000Z"),
|
"temp": 11
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-19T12:00:00.000Z"),
|
"temp": 12
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-19T16:00:00.000Z"),
|
"temp": 17
|
},
|
{
|
"metadata": { "sensorId": 5578, "type": "temperature" },
|
"timestamp": ISODate("2021-05-19T20:00:00.000Z"),
|
"temp": 12
|
}
|
] )
|
|
db.sensor_detail.insertOne({
|
"sensor": { "sensorId": 5578, "type": "temperature" },
|
"description":"This is a temperature sensor"
|
})
|
example:
1.
db.weather.aggregate( [
|
{
|
$group: {
|
_id: "metadata.sensorId",
|
avgTmp: { $avg: "$temp" }
|
}
|
}
|
] )
|
2.
db.weather.aggregate( [
|
{
|
$lookup: {
|
from: "sensor_detail",
|
localField: "metadata",
|
foreignField: "sensor",
|
as: "sensor_info"
|
}
|
}
|
] )
|
|