$dateToString
聚合运算符按用户指定的格式将日期对象转为字符串。
{
$dateToString: {
date: <dateExpression>,
format: <formatString>,
timezone: <tzExpression>,
onNull: <expression>
} }
字段说明:
字段 | 是否必须 | 描述 |
---|---|---|
date |
是 | <dateExpression> 可以是日期、时间戳或对象Id表达式 |
format |
否 | 日期格式,<formatString> 可以是任何字符串,包含0个或多个格式指示符 |
timezone |
否 | 执行操作的时区,<tzExpression> 必须是能被解析为奥尔森时区标识符格式的字符串或UTC偏移量,如果timezone 不指定,返回值显示为UTC |
onNull |
否 | 当date 为空或缺失时的返回值。参数可以是任何有效的表达式。如果未指定$dateToString 会在date 为null 或缺失时返回null 。 |
<formatString>
格式指示符可以是下面的值:
指示符 | 描述 | 可能的值 |
---|---|---|
%b | 月份缩写(3个字符) | jan , feb , mar , apr , may , jun , jul , aug , sep , oct , nov , dec |
%B | 完整月份 | january -december |
%d | 一个月内的第几天(2个数字,0填充) | 01 -31 |
%G | ISO8601格式 年 | 0000-9999 |
%H | 小时(2个数字,0填充,24小时时钟) | 00-23 |
%j | 一年内的第几天(3个数字,0填充) | 001-366 |
%L | 毫秒(3个数字,0填充) | 000=999 |
%m | 月(2个数字,0填充) | 01-12 |
%M | 分钟(2个数字,0填充) | 00-59 |
%S | 秒(2个数字,0填充) | 00-60 |
%u | ISO8601格式的一周内的第几天 | 1-7 |
%U | 一年内的第几周(2个数字,0填充) | 00-53 |
%V | ISO8601格式的一年内的第几周 | 1-53 |
%w | 一周内的第几天(整数,0-Sunday,6-Saturday) | 0-6 |
%Y | 年(4个数字,0填充) | 0000-9999 |
%z | 时区与UTC的偏移量 | +/-[hh][mm] |
%Z | 从 UTC 开始的分钟偏移量,用数字表示。例如,如果时区偏移(+/-[hhmm])为 +0445 ,则分钟偏移为+285 。 |
+/-mmm |
%% | 百分比字符作为字面值 | % |
集合sales
有下面的文档:
{
"_id" : 1,
"item" : "abc",
"price" : 10,
"quantity" : 2,
"date" : ISODate("2014-01-01T08:15:39.736Z")
}
下面的聚合使用$dateToString
返回date
字段格式化后的字符串:
db.sales.aggregate(
[
{
$project: {
yearMonthDayUTC: {
$dateToString: {
format: "%Y-%m-%d", date: "$date" } },
timewithOffsetNY: {
$dateToString: {
format: "%H:%M:%S:%L%z", date: "$date", timezone: "America/New_York"} },
timewithOffset430: {
$dateToString: {
format: "%H:%M:%S:%L%z", date: "$date", timezone: "+04:30" } },
minutesOffsetNY: {
$dateToString: {
format: "%Z", date: "$date", timezone: "America/New_York" } },
minutesOffset430: {
$dateToString: {
format: "%Z", date: "$date", timezone: "+04:30" } },
abbreviated_month: {
$dateToString: {
format: "%b", date: "$date", timezone: "+04:30" } },
full_month: {
$dateToString: {
format: "%B", date: "$date", timezone: "+04:30" } }
}
}
]
)
执行的结果如下:
{
"_id" : 1,
"yearMonthDayUTC" : "2014-01-01",
"timewithOffsetNY" : "03:15:39:736-0500",
"timewithOffset430" : "12:45:39:736+0430",
"minutesOffsetNY" : "-300",
"minutesOffset430" : "270",
"abbreviated_month": "Jan",
"full_month": "January"
}
更多【数据库-MongoDB聚合运算符;$dateToString】相关视频教程:www.yxfzedu.com