У меня есть коллекция запросов со следующей схемой
// Request Model
const RequestSchema = new db.mongoose.Schema({
date: {type: Date, default: Date.now},
msisdn: String,
source: String,
response: Object
})
Как можно агрегировать данные в mongodb (библиотека mongoose) как транзакции в секунду?
Вот способСейчас я агрегирую
Model.Request
.aggregate([{
$match: {
date: {
$lte: new Date(),
$gte: new Date(datetime.daysago(n))
}
}
},
{
$group: {
_id: {
year: { $year: '$date' },
month: { $month: '$date' },
dayOfMonth: { $dayOfMonth: '$date' },
hour: { $hour: '$date' },
minute: { $minute: '$date' },
second: { $second: '$date' }
}, cnt: { $sum: 1 }
}
}
])
Возвращает следующий результат
[ { _id:
{ year: 2019,
month: 3,
dayOfMonth: 19,
hour: 14,
minute: 0,
second: 25 },
cnt: 5 },
{ _id:
{ year: 2019,
month: 3,
dayOfMonth: 19,
hour: 14,
minute: 0,
second: 24 },
cnt: 2 },
{ _id:
{ year: 2019,
month: 3,
dayOfMonth: 19,
hour: 14,
minute: 0,
second: 23 },
cnt: 7 },
{ _id:
{ year: 2019,
month: 3,
dayOfMonth: 19,
hour: 14,
minute: 0,
second: 22 },
cnt: 1 }]
Однако я хочу включить каждую секунду для периода, что-то вроде:
[{
date: '2019-04-05T10:22:34'
tps: 412
},
{
date: '2019-04-05T10:22:35'
tps: 5
},
{
date: '2019-04-05T10:22:36'
tps: 0 // <- problem is here
},
{
date: '2019-04-05T10:22:37'
tps: 201
},
{
date: '2019-04-05T10:22:38'
tps: 531
},
{
date: '2019-04-05T10:22:39'
tps: 400
}
]
Это возможно с библиотекой мангуста?Или я связан с манипуляциями с кодом?