个人网站开发技术要求,上海外贸官网,上海产品设计公司排行,陵水建设局网站$dateToParts聚合运算符将日期表达式拆分成多个字段放在一个文档返回#xff0c;属性有year、month、day、hour、minute、second和millisecond。如果iso8601属性设置为true#xff0c;返回的各部分用ISO周日期返回#xff0c;属性分别是#xff1a;isoWeekYear、isoWeek、i…$dateToParts聚合运算符将日期表达式拆分成多个字段放在一个文档返回属性有year、month、day、hour、minute、second和millisecond。如果iso8601属性设置为true返回的各部分用ISO周日期返回属性分别是isoWeekYear、isoWeek、isoDayOfWeek、hour、minute、second和millisecond。
语法
{$dateToParts: {date : dateExpression,timezone : timezone,iso8601 : boolean}
}字段说明
字段是否必须描述date是dateExpression可以是日期、时间戳或对象Id表达式timezone否执行操作的时区tzExpression必须是能被解析为奥尔森时区标识符格式的字符串或UTC偏移量如果timezone不指定返回值显示为UTCiso8601否如果设置为true则修改输出文档以使用ISO周日期字段。默认为false。
使用
在timezone字段中使用Olson时区标识符时如果适用于指定时区MongoDB 会应用 DST 偏移量。
例如集合sales有下列的文档
{_id : 1,item : abc,price : 20,quantity : 5,date : ISODate(2017-05-20T10:24:51.303Z)
}下面的聚合说明了MongoDB如何处理Olson时区标识符的DST偏移量。示例使用$hour和$minute操作符返回日期字段的相应部分
db.sales.aggregate([
{$project: {nycHour: {$hour: { date: $date, timezone: -05:00 }},nycMinute: {$minute: { date: $date, timezone: -05:00 }},gmtHour: {$hour: { date: $date, timezone: GMT }},gmtMinute: {$minute: { date: $date, timezone: GMT } },nycOlsonHour: {$hour: { date: $date, timezone: America/New_York }},nycOlsonMinute: {$minute: { date: $date, timezone: America/New_York }}}
}])操作返回以下结果
{_id: 1,nycHour : 5,nycMinute : 24,gmtHour : 10,gmtMinute : 24,nycOlsonHour : 6,nycOlsonMinute : 24
}举例
下面的sales集合有以下文档
{_id : 2,item : abc,price : 10,quantity : 2,date : ISODate(2017-01-01T01:29:09.123Z)
}下面的聚合使用$dateToParts返回包含日期字段各组成部分的文档。 db.sales.aggregate([{$project: {date: {$dateToParts: { date: $date }},date_iso: {$dateToParts: { date: $date, iso8601: true }},date_timezone: {$dateToParts: { date: $date, timezone: America/New_York }}}
}])操作返回下面的结果
{_id : 2,date : {year : 2017,month : 1,day : 1,hour : 1,minute : 29,second : 9,millisecond : 123},date_iso : {isoWeekYear : 2016,isoWeek : 52,isoDayOfWeek : 7,hour : 1,minute : 29,second : 9,millisecond : 123},date_timezone : {year : 2016,month : 12,day : 31,hour : 20,minute : 29,second : 9,millisecond : 123}
}