sql >> データベース >  >> NoSQL >> MongoDB

MongoDb文字列から月と年でグループ化する方法

    日付集計演算子 は使用できません 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の呼び出しについては。




    1. SQLでパーセンテージとして数値をフォーマットする

    2. MongoDB PHP:JSONフィードでObjectIdを取得するにはどうすればよいですか? (空白です)

    3. MavenがSpigotで実行されていない

    4. エラー:get呼び出しのためのnodejsのgetaddrinfo ENOTFOUND