AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

$dateToParts(式演算子)

$dateToParts

指定された BSON Date 値の構成部分を個々のプロパティとして返します。 返されるプロパティは、 year 、 month 、 day 、 hour 、 minute 、 second 、 millisecondです。

代わりに ISO 週日 を表す部分を返すには、iso8601プロパティを true に設定します。これにより、プロパティが isoWeekYear、isoWeek、isoDayOfWeek、hour、minute、second、millisecond であるドキュメントが返されます。

$dateToParts式の構文は次のとおりです。

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

$dateToPartsは、次のフィールドを持つドキュメントを取得します。

フィールド
必須/オプション
説明

date

必須

部分を返す入力日付。 <dateExpression>は、 日付 、 タイムスタンプ 、または ObjectId に変換される任意の 式 にすることができます。式の詳細については、「式 」を参照してください。

timezone

任意

日付の形式に使用するタイムゾーン。 デフォルトでは、 $dateToPartsは UTC を使用します。

<timezone> は、値が次のいずれかの として評価される任意の 式string にすることができます。

  • Olson タイムゾーン識別子("Europe/London" や "America/New_York" など)、または

  • 次の形式の UTC オフセット:

    • +/-[hh]:[mm]、例: "+04:45" 、または

    • +/-[hh][mm]、例: "-0530" 、または

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

式の詳細については、「式 」を参照してください。

iso8601

任意

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 がタイムゾーン識別子の 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 }}
このページを評価

項目一覧