Я пытаюсь объединить документы по дате с рамкой агрегации Mongo. Я пробовал кучу вещей и не могу определить проблему. Мой запрос выглядит следующим образом:Группа по дате Mongo aggregation
// get current date and then get the date 8 months ago
var now = Date.now()
var lastMonth = 60*60*24*30*1000*8
lastMonth = now - lastMonth
var query = {
type: 'something',
deleted: {$ne: true},
created: {$gte: lastMonth}
}
var stickerNames = [];
db.Message.aggregate([{$match: query},
{$group:
{_id: {data: '$data',
month: {$month: '$created'},
year: {$year: '$created'}
},
count:{$sum: 1}
}
},
{$sort:
{count: 1}}],
function(err, stuff){
if(err){
return res.json({error: err.message})
}
else{
return res.json({data: stuff})
}
})
Я пробовал кучу разных вещей с датами и проверил другие SO сообщения, но ничего не работает до сих пор. Если я выберу созданное предложение: {$ gte: lastMonth}, он возвращает каждый документ типа «что-то». Если я оставлю его, он не вернет документы.
Созданное поле устанавливается в модели
created: {type: Date, default: Date.now}
Свидание объект минус число возвращает значение временной метки, а не количество миллисекунд. Вы должны делать: 'lastMonth = new Date (now - lastMonth)' ' –