Я бы сказал, что ваш metrictimestamp
, вероятно, будет содержать первые несколько символов 20180201
как YYYYMMDD
, поэтому, используя $ substrbytes в совокупности, вы можете получить месяц, день, год из строки. Попробуйте запрос ниже:
db.collection.aggregate([
{
$addFields: {
day: { $toInt: { $substrBytes: [ "$metrictimestamp", 6, 2 ] } }, // $toInt can be optional
month: { $toInt: { $substrBytes: [ "$metrictimestamp", 4, 2 ] } },
year: { $toInt: { $substrBytes: [ "$metrictimestamp", 0, 4 ] } }
}
},
{
$group: {
_id: { vehicleid: "$vehicleid", day: "$day", year: "$year" },
count: { $sum: 1 }
}
}
])
Тест: mongoplayground