如何在特定年份使用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 } ] ]
请帮助分组年份时如何使用条件,
你想用hireDateCount
做hireDateCount
?
您的查询正在尝试计算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]); });
希望有所帮助