Смотри мой проблемный хе-хе. Я не знаю, как я могу это сделать. Есть много assetState 1..n Я хотел бы сделать агрегацию для получения последней группы состояний активов по активам.
Коллекция Монго: assetState
[
{
"lsd" : {
"$id" : ObjectId("lucas")
},
"stateDate" : ISODate("2018-09-10T16:26:44.501Z"),
"assetId" : ObjectId("5b96b7645f2b3c0101520s60")
},
{
"lsd" : {
"$id" : ObjectId("denner")
},
"stateDate" : ISODate("2018-09-10T17:26:44.501Z"),
"assetId" : ObjectId("5b96b7645f2b3c0101520s60")
},
{
"lsd" : {
"$id" : ObjectId("denner")
},
"stateDate" : ISODate("2018-09-10T18:26:44.501Z"),
"assetId" : ObjectId("5b96b7645f2a8c0001530f61")
},
{
"lsd" : {
"$id" : ObjectId("lermen")
}
},
"stateDate" : ISODate("2018-09-10T20:26:44.501Z"),
"assetId" : ObjectId("5b96b7645f2a8c0001530f61")
},
{
"lsd" : {
"$id" : ObjectId("floripa")
},
"stateDate" : ISODate("2018-09-10T19:26:44.501Z"),
"assetId" : ObjectId("5b96b7645f2a8c0001530f61")
}
]
Я хотел бы получить максимум "stateDate", поэтому мне нужно получить LSD из той же строки (документа).
Ожидаемый результат:
{
"lsd" : {
"$id" : ObjectId("lermen")
},
"stateDate" : ISODate("2018-09-10T20:26:44.501Z")
}
Я пытался сделать:
db.getCollection('assetState').aggregate([
{
$group: {
"_id": {"assetId": "$assetId"},
"stateDate": {
"$max": "$stateDate"
},
"lsd": {$last: "$lsd"} // I tried change $max to $min and $last it din't work :(
}
]);
Результат:
{
"lsd" : {
"$id" : ObjectId("floripa")
},
"stateDate" : ISODate("2018-09-10T20:26:44.501Z")
}
Большое спасибо