The following query can get us the expected output:
db.TN_Collection.aggregate([
{
$match:{
"DE":{
$in:["76612"]
},
"T":{
$gte:ISODate('2019-09-11 07:20:55.298'),
$lte:ISODate('2019-09-15 22:25:00.000')
}
}
},
{
$group:{
"_id":{
"A":"$A",
"DE":"$DE"
},
"firstSeen":{
$min:"$T"
},
"lastSeen":{
$max:"$T"
}
}
},
{
$project:{
"_id":0,
"A":"$_id.A",
"DE":"$_id.DE",
"Duration":{
$divide:[
{
$subtract:[
"$lastSeen",
"$firstSeen"
]
},
60000
]
}
}
}
]).pretty()
Data set:
{
"_id" : ObjectId("5d9b306b711a1e3a8167c712"),
"DE" : "76612",
"A" : "00101219",
"T" : ISODate("2019-09-11T07:20:55.298Z"),
"R" : -58
}
{
"_id" : ObjectId("5d9b306b711a1e3a8167c713"),
"DE" : "76612",
"A" : "00101208",
"T" : ISODate("2019-09-11T07:20:55.298Z"),
"R" : -64
}
{
"_id" : ObjectId("5d9b306b711a1e3a8167c714"),
"DE" : "76612",
"A" : "00100005",
"T" : ISODate("2019-09-11T07:20:55.298Z"),
"R" : -70
}
{
"_id" : ObjectId("5d9b306b711a1e3a8167c715"),
"DE" : "76612",
"A" : "00101219",
"T" : ISODate("2019-09-12T07:20:55.298Z"),
"R" : -58
}
{
"_id" : ObjectId("5d9b306b711a1e3a8167c716"),
"DE" : "76612",
"A" : "00101208",
"T" : ISODate("2019-09-13T07:20:55.298Z"),
"R" : -64
}
{
"_id" : ObjectId("5d9b306b711a1e3a8167c717"),
"DE" : "76612",
"A" : "00100005",
"T" : ISODate("2019-09-14T07:20:55.298Z"),
"R" : -70
}
Output:
{ "A" : "00100005", "DE" : "76612", "Duration" : 4320 }
{ "A" : "00101208", "DE" : "76612", "Duration" : 2880 }
{ "A" : "00101219", "DE" : "76612", "Duration" : 1440 }