$dateFromString
¶3.6版的新功能。
将日期/时间字符串转换为日期对象。
该$dateFromString
表达式具有以下语法:
该$dateFromString
文件包含以下字段:
领域 | 描述 |
---|---|
dateString |
要转换为日期对象的日期/时间字符串。有关日期 /时间格式的更多信息,请参见 日期。 注意 如果 |
format |
可选的。的日期格式规范
如果未指定,则 版本4.0中的新功能。 |
timezone |
可选的。用于格式化日期的时区。 注意 如果自
有关表达式的更多信息,请参见 表达式。 |
onError |
可选的。如果 如果未指定 |
onNull |
可选的。如果 如果不指定 |
例 | 结果 |
---|---|
ISODate("2017-02-08T12:10:40.787Z") |
|
ISODate("2017-02-08T17:10:40.787Z") |
|
ISODate("2017-02-08T00:00:00Z") |
|
ISODate("2018-06-15T00:00:00Z") |
|
ISODate("2018-06-15T00:00:00Z") |
以下格式说明符可用于
<formatString>
:
说明符 | 描述 | 可能的值 |
---|---|---|
%d |
每月的日期(2位数字,零填充) | 01 --31 |
%G |
ISO 8601格式的年份 | 0000 --9999 |
%H |
小时(2位数字,零填充,24小时制) | 00 --23 |
%L |
毫秒(3位数字,零填充) | 000 --999 |
%m |
月(2位数字,零填充) | 01 --12 |
%M |
分钟(2位数字,零填充) | 00 --59 |
%S |
秒(2位数字,零填充) | 00 --60 |
%u |
ISO 8601格式的星期几编号(1-Monday,7-Sunday) | 1 --7 |
%V |
一年中的星期,采用ISO 8601格式 | 1 --53 |
%Y |
年(4位数字,零填充) | 0000 --9999 |
%z |
与UTC的时区偏移量。 | +/-[hh][mm] |
%Z |
分钟数从UTC偏移为一个数字。例如,如果时区偏移量(+/-[hhmm] )为+0445 ,则分钟偏移量为+285 。 |
+/-mmm |
%% |
文字字符百分比 | % |
考虑一个logmessages
包含以下带有日期的文档的集合。
以下聚合使用$ dateFromString将date
值转换为日期对象:
上述汇总返回以下文档,并将每个date
字段转换为东部时区:
该timezone
参数也可以通过一个文档字段,而不是硬编码参数提供的。例如:
上面的汇总返回以下文档,并将每个date
字段转换为各自的UTC表示形式。
onError
¶如果您的集合包含带有不可解析的日期字符串的文档,则
$dateFromString
除非为可选参数提供聚合表达式,
否则将引发错误
onError
。
例如,给定一个dates
具有以下文档的集合:
您可以使用onError
参数以其原始字符串形式返回无效日期:
这将返回以下文档:
onNull
¶如果您的集合包含带有null
日期字符串的文档,则除非您为可选
参数提供聚合表达式,
否则
$dateFromString
将返回。null
onNull
例如,给定一个dates
具有以下文档的集合:
您可以使用onNull
参数$dateFromString
返回代表Unix纪元的日期,而不是null
:
这将返回以下文档: