日付集計演算子
は使用できません Date
であるその他の情報
オブジェクト自体。究極の最良のオプションは、これらの「文字列」を適切なDate
オブジェクトを使用して、この操作と将来の操作で正しくクエリを実行できるようにします。
とはいえ、「文字列」が常に共通の構造を持っている場合は、集約フレームワーク
ツール。これを問題に対処するための「最適な」アプローチにしない多くの操作思考が必要です。ただし、「2桁」の構造と一貫した区切り文字を使用すると、 $substr
演算子:
db.collection.aggregate([
{ "$group": {
"_id": {
"year": { "$substr": [ "$dateStr", 7, 4 ] },
"month": { "$substr": [ "$dateStr", 4, 2 ] }
},
"count": { "$sum": 1 }
}}
])
そのため、JavaScriptキャストは集約フレームワーク内では機能しません。 「クライアントコード」の評価に基づいてパイプラインに入力をいつでも「フィード」できますが、集計プロセス自体はコードを評価しません。基本的なクエリエンジンと同様に、これはすべて、「ネイティブ演算子」命令を使用して作業を行う「データ構造」実装に基づいています。
集計パイプラインで文字列を日付に変換することはできません。実際のBSON Date
を使用する必要があります
オブジェクトですが、「辞書式順序」で提示できる一貫した形式がある場合は、文字列を使用してそれを行うことができます。
これらをBSON Dates
に変換することをお勧めします できるだけ速くに。また、「ISODate」またはUTC値は異なる文字列形式で構成されていることに注意してください。すなわち:
new Date("2020-01-07")
「yyyy-mm-dd」形式であること。少なくともJavaScriptの呼び出しについては。