Я исправил это, $ project нужно, чтобы все поля, которые нам нужны в условии $ match, точно так же, как я хочу получить результат для диапазона дат, мое поле - entry_date
, вот мой код ...
var company_id= company._id
var start = new Date(req.body.from_date);
start.setHours(0,0,0,0);
var end = new Date(req.body.to_date);
end.setHours(23,59,59,999);
VisitorCompany.aggregate(
[
{
$match: {
$and:[
{ entry_date: { $gt: start, $lt: end } },{company_id:""+company_id+""}
]
}
},
{ $sort : { entry_date : -1 } },
{
$group:
{
_id:
{
day: { $dayOfMonth: "$entry_date" },
month: { $month: "$entry_date" },
year: { $year: "$entry_date" }
},
count: { $sum:1 },
entry_date: { $first: "$entry_date" }
}
},
{
$project:
{
entry_date:
{
$dateToString: { format: "%Y-%m-%d", date: "$entry_date" }
},
count: 1,
_id: 0
}
}
])
и вывод здесь ....
{
"count": 1,
"entry_date": "2018-11-18"
},
{
"count": 2,
"entry_date": "2018-11-22"
},
{
"count": 2,
"entry_date": "2018-11-23"
},