2 回答
TA贡献1815条经验 获得超13个赞
您可以进行聚合,首先使用 将日期字符串转换为日期$toDate,并使用 跟踪年份$year。然后你可以$match在给定的日期范围内的所有文件,最后$group是年份和$count:
YourModel.aggregate([
{ "$addFields": {
"year":{ "$year": {
"$toDate": "$date"
}
} }},
{
$match: {
// define your range of years here, it would be 2015 - 2016 in your case
year: {$gte: 2016, $lte: 2020}
}
},
{
$group: {
_id: {year: "$year"}
}
},
{
$count: "totalCountPerYearRange"
}
]);
TA贡献1796条经验 获得超4个赞
只要日期字符串在数组中 - 使用 [] NOT {}(它定义了一个需要属性:值对的对象),那么您就可以将字符串转换为日期并进行简单的比较。以下将返回一个数组,您可以在其中简单地获取数组的长度以进行计数。
let myDates = [
"Thu Jan 07 2016",
"Tue Mar 01 2016",
"Wed May 25 2016",
"Sat Jun 25 2016",
"Sun Aug 14 2016",
"Fri Nov 18 2016",
"Fri Jan 06 2017",
"Sun Apr 16 2017",
"Sun May 21 2017",
"Sun Jul 30 2017",
"Fri Sep 22 2017",
"Sun Nov 12 2017",
"Sun Dec 24 2017"
]
let firstDate = new Date("Wed May 25 2016");
let lastDate = new Date("Thu May 25 2017");
let matches = myDates.filter(d => {if (new Date(d) >= firstDate && new Date(d) <= lastDate) return d});
console.log(matches);
console.log(matches.length);
添加回答
举报
