Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$dateToParts(集計)

項目一覧

  • 定義
  • 動作
$dateToParts

バージョン 3.6 の新機能

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

iso8601プロパティをtrue に設定すると、 ISO 週日 を表す部分が返されます ください。これにより、プロパティがisoWeekYearisoWeekisoDayOfWeekhourminutesecondmillisecondであるドキュメントが返されます。

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

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

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

フィールド
必須/オプション
説明
date
必須
部分を返す入力日付。 <dateExpression>は、 Date Timestamp 、または に変換される任意の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 コレクションを考えます。

{
"_id" : 1,
"item" : "abc",
"price" : 20,
"quantity" : 5,
"date" : ISODate("2017-05-20T10:24:51.303Z")
}

次の集計は、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
}
}

戻る

$dateSubtract

項目一覧