从日期字符串计算整年

我目前在 Node 中使用猫鼬作为数据库。我有两个模型 product 和 customer 。每当客户购买产品时,当前日期就会存储在产品的SellingDate属性中。现在我想要实现的是,当我们给出一个随机日期作为输入时,它应该将它与最多一年的所有产品的所有销售日期进行比较,并返回给我们一年之间的所有日期的计数。例如,如果我们在数据库中有5 条记录, { “Sun Feb 25 2015”,“Fri Mar 25 2015”,“Sat Dec 25 2015”,“Mon Feb 25 2016” } 我给“Sun Feb 25, 2015”2015 年 2 月 - 2016 年 2 月.... 它应该比较字符串格式的日期,因为我以“日月日年”格式存储日期......



慕莱坞森
浏览 190回答 2
2回答

萧十郎

您可以进行聚合,首先使用 将日期字符串转换为日期$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"    }]);

慕的地8271018

只要日期字符串在数组中 - 使用 [] NOT {}(它定义了一个需要属性:值对的对象),那么您就可以将字符串转换为日期并进行简单的比较。以下将返回一个数组,您可以在其中简单地获取数组的长度以进行计数。let myDates = [&nbsp; &nbsp; "Thu Jan 07 2016",&nbsp; &nbsp; "Tue Mar 01 2016",&nbsp; &nbsp; "Wed May 25 2016",&nbsp; &nbsp; "Sat Jun 25 2016",&nbsp; &nbsp; "Sun Aug 14 2016",&nbsp; &nbsp; "Fri Nov 18 2016",&nbsp; &nbsp; "Fri Jan 06 2017",&nbsp; &nbsp; "Sun Apr 16 2017",&nbsp; &nbsp; "Sun May 21 2017",&nbsp; &nbsp; "Sun Jul 30 2017",&nbsp; &nbsp; "Fri Sep 22 2017",&nbsp; &nbsp; "Sun Nov 12 2017",&nbsp; &nbsp; "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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript