如何在特定年份使用mongoose条件进行分组

我不得不使用mongoose组合来计算特定年份的计数和合计函数,但是我并没有使用条件来分组特定年份,我必须使用下面的代码,

Opp.aggregate([ {$project:{ _id: {year: {$year: '$HireDate'}}, hireDateValue: {year: {$year: '$HireDate'}}, hireDateCount: {$cond: [{"$and":[{"$or":[{"$eq":["$HireDate","1994-01-17 00:00:00.000"]}]}]}, 1, 0]} }}, {$group: { _id: '$hireDateValue', count: {$sum: '$hireDateCount'} }}, {$sort: {_id: 1}} ], function (err, dateResult) { resultAggr[0].items = dateResult; res.send([resultAggr]); }); 

我的回复,

 [ [ { "id":7, "_id":"HiredDate", "items":[ {...}, { "_id":{ "year":1990 }, "count":0 }, { "_id":{ "year":1991 }, "count":0 }, { "_id":{ "year":1992 }, "count":0 }, { "_id":{ "year":1993 }, "count":0 }, { "_id":{ "year":1994 }, "count":0 },{...} ], "expanded":true } ] ] 

请帮助分组年份时如何使用条件,

你想用hireDateCounthireDateCount

您的查询正在尝试计算HireDate的总数,其中HireDate是“1994-01-17 00:00:00.000”,并按年份

如果你想计算雇用人数,按年分组,然后这个

 Opp.aggregate([ {$project:{ _id: {year: {$year: '$HireDate'}}, hireDateValue: {year: {$year: '$HireDate'}} }}, {$group: { _id: '$hireDateValue', count: {$sum: 1 } }}, {$sort: {_id: 1}} ], function (err, dateResult) { resultAggr[0].items = dateResult; res.send([resultAggr]); }); 

或2015年的雇用数量(过滤HiredDate低于2016年,大于或等于2015年)

 Opp.aggregate([ { $match: { HiredDate: { $lt: new Date("2016-01-01"), $gte: new Date("2015-01-01") } } }, {$project:{ _id: {year: {$year: '$HireDate'}}, hireDateValue: {year: {$year: '$HireDate'}} }}, {$group: { _id: '$hireDateValue', count: {$sum: 1 } }}, {$sort: {_id: 1}} ], function (err, dateResult) { resultAggr[0].items = dateResult; res.send([resultAggr]); }); 

希望有所帮助