Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 一年中的周数_Mongodb_Date_Momentjs - Fatal编程技术网

Mongodb 一年中的周数

Mongodb 一年中的周数,mongodb,date,momentjs,Mongodb,Date,Momentjs,我试图在MomentJS中将MongoDB记录划分为日期范围 在Mongo中,每条记录的IsoDate格式为: "date": { "$date": "2015-06-26T13:02:12.121Z" }, 我的查询返回周和年: var query = Order.aggregate( [ { $project: { week:

我试图在MomentJS中将MongoDB记录划分为日期范围

在Mongo中,每条记录的IsoDate格式为:

"date": {
    "$date": "2015-06-26T13:02:12.121Z"
},
我的查询返回周和年:

    var query = Order.aggregate(
        [
            {
                $project:
                {
                    week:
                    {
                        $week: '$date'
                    },
                    year:
                    {
                        $year: '$date'
                    },
                    dayOfWeek: {
                        $dayOfWeek:
                            [
                                '$date'
                            ]

                    }
                }
            },
            {
                $group:
                {
                    _id: null,
                    distinctDate:
                    {
                        $addToSet:
                        {
                            year: '$year',
                            week: '$week'
                        }
                    }
                }
            }
        ]
    );
它给出了几周和一年的输出:

week: 50
year: 2015
在前端,我的一周从周一开始,周日结束:

var monday = moment().day("Monday").isoWeek(weekNum).year(year).format('MM-DD-YYYY');
var sunday = moment().day("Sunday").isoWeek(weekNum).year(year).format('MM-DD-YYYY');
输出为:

12-26-2015 to 01-01-2015
12-19-2015 to 12-25-2015
12-12-2015 to 12-18-2015
这个问题出现在当下处理新年的时候:

console.log('WeekNum',WeekNum,周一,周日,一年):

 WeekNum 0 12-28-2016 01-03-2016
如果我的一周从周一开始,那么2016年的周数0应该从2016年1月4日开始,对吗?因此,2015年的周数
52
将包含2015年12月和2016年1月的记录

我不知道如何保持全年的周数一致

输出应为:

12-26-2015 to 01-01-2016
12-19-2015 to 12-25-2015
12-12-2015 to 12-18-2015
我想最好是通过获取每条记录的
ISOdate
,然后简单地向其添加
7
?这就是一周的范围

var start_of_week = moment().dayOfYear(dayOfYear).year(year).format('MM-DD-YYYY');
var end_of_week = moment().dayOfYear(dayOfYear).year(year).add('days', 7).format('MM-DD-YYYY');
但这有时会产生意想不到的结果。我得到了重叠的一周范围:

01-01-2016 to 01-08-2016
12-29-2015 to 01-05-2016
12-27-2015 to 01-03-2016
12-26-2015 to 01-02-2016

MongoDB的
$week
概念与Moment.js中使用的“ISO week”概念相匹配。如果可以,请至少升级到MongoDB 3.4版本,并开始使用标准的ISO周概念

否则,您必须为Moment.js定义一个自定义区域设置,使Moment.js的“周”概念与Mongo匹配,其中“周从星期日开始,第一周从一年中的第一个星期日开始。”