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);
添加回答
舉報