I am new to MongoDb and would appreciate some help with this query. I wrote the following aggregation pipeline with Get last 5 days data based on date field but small issue all data is comming how to get only 5 days data and sum of consumption any one please any one suggest me.
{
"timeId" : ISODate("2018-09-10T16:40:08.817Z"),
"vendor" : "CIMCON",
"slcId" : "123450"
"mongoStreetLightChildVo" : {
"deviceType" : "L",
"totalStreetLights" : 3.0,
"totalConsumptionMtd" : "2"
"mongoStreetLightChildVo1s" : [
{
"date" : ISODate("2018-09-01T16:40:08.817Z"),
"consumption" : 27.0,
"burnHours" : 24.0
},
{
"date" : ISODate("2018-09-02T16:40:08.817Z"),
"consumption" : 2.0,
"burnHours" : 24.0
},
{
"date" : ISODate("2018-09-03T16:40:08.817Z"),
"consumption" : 287.0,
"burnHours" : 20.0
},
{
"date" : ISODate("2018-09-04T16:40:08.817Z"),
"consumption" : 209.0,
"burnHours" : 2.0
},
{
"date" : ISODate("2018-09-05T16:40:08.817Z"),
"consumption" : 243.0,
"burnHours" : 4.0
},
{
"date" : ISODate("2018-09-06T16:40:08.817Z"),
"consumption" : 254.0,
"burnHours" : 4.0
},
{
"date" : ISODate("2018-09-07T16:40:08.817Z"),
"consumption" : 235.0,
"burnHours" : 24.0
},
{
"date" : ISODate("2018-09-08T16:40:08.817Z"),
"consumption" : 62.0,
"burnHours" : 24.0
},
{
"date" : ISODate("2018-09-09T16:40:08.817Z"),
"consumption" : 2.0,
"burnHours" : 23.0
},
{
"date" : ISODate("2018-09-10T02:40:08.817Z"),
"consumption" : 26.0,
"burnHours" : 27.0
}
]
}
}
This is my dataset.
I use this to get the Last 5 days data.
db.collection.aggregate([
{$match:{
"mongoStreetLightChildVo.mongoStreetLightChildVo1s.date":
{
$gte: new Date((new Date().getTime() - (5 * 24 * 60 * 60 * 1000)))
}
}
},
{$project:{
"mongoStreetLightChildVo.mongoStreetLightChildVo1s.date":1,
"mongoStreetLightChildVo.mongoStreetLightChildVo1s.consumption":1
}}
])
how to get only 5 days data
My required output is:
{
"date" : ISODate("2018-09-05T16:40:08.817Z"),
"consumption" : 243.0,
"burnHours" : 4.0
},
{
"date" : ISODate("2018-09-06T16:40:08.817Z"),
"consumption" : 254.0,
"burnHours" : 4.0
},
{
"date" : ISODate("2018-09-07T16:40:08.817Z"),
"consumption" : 235.0,
"burnHours" : 24.0
},
{
"date" : ISODate("2018-09-08T16:40:08.817Z"),
"consumption" : 62.0,
"burnHours" : 24.0
},
{
"date" : ISODate("2018-09-09T16:40:08.817Z"),
"consumption" : 2.0,
"burnHours" : 23.0
},
{
"date" : ISODate("2018-09-10T02:40:08.817Z"),
"consumption" : 26.0,
"burnHours" : 27.0
}