On this page
$isoWeek (aggregation)
在本页面
Definition
$isoWeek
- 3.4 版的新功能。
以 ISO 8601 格式返回星期数,范围从1
到53
。星期编号从1
开始,其中包含该年的第一个星期四的星期(星期一至星期日)。
{ $isoWeek: <dateExpression> }
在版本 3.6 中更改。
该参数必须是有效的expression,它可以解析为以下之一:
3.6 版的新功能。
{ date: <dateExpression>, timezone: <tzExpression> }
Field | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|
date |
运算符的应用日期。 <dateExpression> 必须是可解析为Date,Timestamp或ObjectID的有效expression。 |
||||||||
timezone |
Optional. 运算结果的时区。 <tzExpression> 必须是有效的expression,它必须解析为格式为奥尔森时区标识符或UTC Offset的字符串。如果未提供timezone ,结果将显示在UTC 中。 |
||||||||
Format |
Examples |
Olson 时区标识符 | “美国/纽约” "Europe/London" “格林尼治标准时间” |
UTC 偏移 | /-[107]:[108],例如“ 04:45” /-[109] [110],例如“ -0530” /-[111],例如“ 03” |
Behavior
Example | Result |
---|---|
{ $isoWeek: { date: new Date("Jan 4, 2016") } } |
1 |
{ $isoWeek: new Date("2016-01-01") } |
53 |
{$ isoWeek:{ | |
日期:new Date(“ 2011 年 8 月 14 日”), timezone: "America/Chicago" } } |
32 |
{ $isoWeek: ISODate("1998-11-02T00:00:00Z") } |
45 |
{$ isoWeek:{ date: ISODate("1998-11-02T00:00:00Z"), timezone: "-0500" } } |
44 |
{ $isoWeek: "March 28, 1976" } |
error |
{ $isoWeek: Date("2016-01-01") } |
error |
{ $isoWeek: "2009-04-09" } |
error |
Note
$isoWeek
不能将字符串作为参数。
Example
名为deliveries
的集合包含以下文档:
{ "_id" : 1, "date" : ISODate("2006-10-24T00:00:00Z"), "city" : "Boston" }
{ "_id" : 2, "date" : ISODate("2011-08-18T00:00:00Z"), "city" : "Detroit" }
以下操作返回每个date
字段的星期数。
db.deliveries.aggregate( [
{
$project: {
_id: 0,
city: "$city",
weekNumber: { $isoWeek: "$date" }
}
}
] )
该操作返回以下结果:
{ "city" : "Boston", "weekNumber" : 43 }
{ "city" : "Detroit", "weekNumber" : 33 }