Я хочу, чтобы мой запрос mon go возвращал счетчик для каждого МЕСЯЦА. Приведенный ниже запрос возвращает счетчик для каждого идентификатора компании для введенной даты.
Например, результатом возврата будет каждый месяц, показывающий идентификатор компании и счет за месяц.
Просто для подтверждения запроса отлично работает, я только после месячного возврата.
var from = new Date("2020-02-20T01:54:00")
var to = new Date("2020-03-25T01:54:00")
// uncomment if you wish `to` date to by NOW
// var to = ISODate()
var minimumRecordsNumber = 3;
var unixFrom = from.getTime() / 1000;
var unixTo = to.getTime() / 1000;
var heading = 'Timeframe\nfrom: ' + from + '\nto: ' + to + '\n\n'
var cursor = db.getCollection('registrations').aggregate([{
'$match': {
'created': {'$gte': unixFrom , '$lte': unixTo},
}
},{
'$group': {
'_id': {'companyID': '$companyID', 'eventID': '$eventID'},
'count': {'$sum': NumberInt(1)}}
},{
'$match': {
'count': {'$gte': minimumRecordsNumber},
}
}])
var companies = {};
var events = [];
while(cursor.hasNext()) {
var data = cursor.next()
var companyID = data._id.companyID
var eventID = data._id.eventID
if (events.indexOf(eventID) === -1) {
events.push(eventID)
if (! companies[companyID]) {
companies[companyID] = 1
} else {
companies[companyID]++
}
}
}
print(heading + tojson(companies))