对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

$dateToParts(表达式操作符)

$dateToParts

返回一个文档,包含给定 BSON 日期值各组成部分作为各个属性。返回的属性为 year、month、day、hour、minute、second 和 millisecond。

您可以将 iso8601 属性设立为 true,以返回表示 ISO 周日期 的部分。这将返回属性为 isoWeekYear、isoWeek、isoDayOfWeek、hour、minute、second 和 millisecond 的文档。

$dateToParts 表达式的语法如下:

{ $dateToParts: { 'date' : <dateExpression>, 'timezone' : <timezone>, 'iso8601' : <boolean> }}

$dateToParts 接受包含以下字段的文档:

字段
必需/可选
说明

date

必需

要返回部分的输入日期。<dateExpression> 可以是任何可解析为日期、时间戳或对象标识符的表达式。有关表达式的更多信息,请参阅表达式。

timezone

Optional

用于设置日期格式的时区。默认情况下,$dateToParts 使用 UTC。

<timezone> 可以是任何计算结果为字符串的表达式,其值为:

  • Olson 时区标识符,例如 "Europe/London" 或 "America/New_York",或者

  • UTC 偏移量,格式如下:

    • +/-[hh]:[mm],例如 "+04:45" ,或

    • +/-[hh][mm],例如 "-0530" ,或

    • +/-[hh], e.g. "+03".

有关表达式的更多信息,请参阅表达式。

iso8601

Optional

如果设置为 true,则修改输出文档以使用 ISO 周日期字段。默认为 false。

在 <timezone> 字段中使用 Olson 时区标识符时,如果适用于指定的时区,MongoDB 会应用 DST 偏移量。

例如,考虑包含以下文档的 sales 集合:

db.sales.insertOne( { "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-01-01T08:15:39.736Z") })

以下聚合说明了 MongoDB 如何处理 Olson 时区标识符的 DST 偏移量。该示例使用 $hour 和 $minute 操作符返回 date 字段的相应部分:

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 返回包含 date 字段组成部分的文档。

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 }}
给本页内容打分

在此页面上