Bạn quên chiếu các trường mà bạn đang sử dụng trong $match
và $group
sau này. Để khắc phục nhanh, hãy sử dụng truy vấn này thay thế:
Offer.aggregate([
{
$project: {
myyear: { $year: "$ending_date" },
carer_id: 1,
status: 1,
ending_date: 1
}
},
{
$match: {
carer_id: req.params.carer_id,
myyear: 2015,
status: 3
}
},
{
$group: {
_id: {
year: { $year: "$ending_date" },
month: { $month: "$ending_date" }
},
count: { $sum: 1 }
}
}],
function (err, res)
{
if (err) {} // TODO handle error
console.log(res);
});
Điều đó nói rằng, Blakes Seven đã giải thích cách thực hiện một truy vấn tốt hơn trong câu trả lời của cô ấy. Tôi nghĩ bạn nên thử và sử dụng cách tiếp cận của cô ấy.