$dateToString(集計)
定義
$dateToString
ユーザーが指定した形式に従って日付オブジェクトを文字列に変換します。
$dateToString
式には次の演算子式の構文があります。
次の環境でホストされる配置には $dateToString
を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
$dateToString
式には次の演算子式の構文があります。
{ $dateToString: { date: <dateExpression>, format: <formatString>, timezone: <tzExpression>, onNull: <expression> } } - The date to convert to string. ``<dateExpression>`` must be a valid :ref:`expression <aggregation-expressions>` that resolves to a :ref:`Date <document-bson-type-date>`, a :ref:`Timestamp <document-bson-type-timestamp>`, or an :ref:`ObjectID <document-bson-type-object-id>`. * - Field - Description - Optional. The date format specification. ``<formatString>`` can be any string literal, containing 0 or more format specifiers. For a list of specifiers available, see :ref:`format-specifiers`. If unspecified and the ``timezone`` is specified and set to a non UTC timezone, then ``$dateToString`` uses ``"%Y-%m-%dT%H:%M:%S.%L"`` as the default format. If unspecified and the ``timezone`` is unspecified or explicitly specified as UTC, then ``$dateToString`` uses ``"%Y-%m-%dT%H:%M:%S.%LZ"`` as the default format. The date to convert to string. ``<dateExpression>`` must be a valid :ref:`expression <aggregation-expressions>` that resolves to a :ref:`Date <document-bson-type-date>`, a :ref:`Timestamp <document-bson-type-timestamp>`, or an :ref:`ObjectID <document-bson-type-object-id>`. * - ``format`` - Optional. The date format specification. ``<formatString>`` can be any string literal, containing 0 or more format specifiers. For a list of specifiers available, see :ref:`format-specifiers`. If unspecified, :expression:`$dateToString` uses ``"%Y-%m-%dT%H:%M:%S.%LZ"`` as the default format. If unspecified, ``$dateToString`` returns null if the ``date`` is null or missing.
フォーマット指定子
<formatString>
0で使える書式指定子は以下の通りでし。
指定子 | 説明 | Possible Values |
---|---|---|
%b | 省略表記の月(3 文字) バージョン 7.0 で追加。 | jan -dec |
%B | 正式な月名 バージョン 7.0 で追加。 | january -december |
%d | 日付(2桁、ゼロあり) | 01 -31 |
%G | ISO 8601 形式の年 | 0000 -9999 |
%H | 時間(2 桁、ゼロあり、24 時間表記) | 00 -23 |
%j | 年内の日(3桁、ゼロ埋め) | 001 -366 |
%L | ミリ秒 (3 桁、ゼロ埋め込み) | 000 -999 |
%m | 月 (2 桁、ゼロ埋め込み) | 01 -12 |
%M | 分(2桁、ゼロ埋め込み) | 00 -59 |
%S | 秒(2 桁、ゼロ埋め込み) | 00 -60 |
%u | ISO 8601 形式の曜日番号(1 - 月曜日、7 - 日曜日) | 1 -7 |
%U | 年内の週(2 桁、ゼロ埋め込み) | 00 -53 |
%V | ISO 8601形式の年内の週 | 01 -53 |
%w | 曜日(1-日曜日、7-土曜日) | 1 -7 |
%Y | 年(4 桁、ゼロ埋め込み) | 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
フィールドを書式設定された string として返します。
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" }