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

MongoDBで日付から週を取得する3つの方法

    MongoDBには、日付から日付部分を抽出するためのさまざまなオプションが用意されています。

    この記事では、MongoDBの日付から週の部分を返す3つの方法を紹介します。

    サンプルデータ

    catsというコレクションがあるとします。 次のドキュメントを使用:

    { "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") }
    { "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:12Z") }
    { "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:30:00Z") }

    次の例は、bornから週の部分を返すためのさまざまなオプションを示しています。 それらのドキュメントのフィールド。

    $week オペレーター

    $week 演算子は、日付の年の週を0から53までの数値として返します。

    したがって、次のコードを実行して、bornから週を返すことができます。 上記のドキュメントのフィールド。

    db.cats.aggregate(
      [
        {
          $project:
            {
              _id: 0,
              birthWeek: { $week: "$born" }
            }
        }
      ]
    )

    結果:

    { "birthWeek" : 1 }
    { "birthWeek" : 49 }
    { "birthWeek" : 38 }

    $weekを使用するときにタイムゾーンを指定することもできます オペレーター。

    MongoDB $weekを参照してください 詳細と例については。

    $dateToString オペレーター

    $dateToString 演算子は、ユーザー指定の形式に従って日付オブジェクトを文字列に変換します。したがって、ユーザーは、必要に応じて週の部分だけを返すように指定できます。

    日付部分ごとにフォーマット指定子があります。日付の週の部分に関しては、%U format指定子は、その年の週と%Vを返します。 format指定子は、その年の週をISO8601形式で返します。

    例:

    db.cats.aggregate(
       [
         {
           $project: {
             _id: 0,
              birthWeek: { $dateToString: { format: "%U", date: "$born" } },
              birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
           }
         }
       ]
    )

    結果:

    { "birthWeek" : "01", "birthWeekISO" : "53" }
    { "birthWeek" : "49", "birthWeekISO" : "49" }
    { "birthWeek" : "38", "birthWeekISO" : "39" }

    MongoDB $dateToStringを参照してください 詳細と例については。

    MongoDB $dateToStringも参照してください この演算子で使用できるフォーマット指定子のリストについては、フォーマット指定子。

    $isoWeek オペレーター

    週をISO8601形式で返す必要がある場合は、$isoWeekを使用してください 。 ISO 8601年は、第1週の月曜日に始まり、先週の日曜日に終わります。

    例:

    db.cats.aggregate(
      [
        {
          $project:
            {
              _id: 0,
              birthIsoWeek: { $isoWeek: "$born" }
            }
        }
      ]
    )

    結果:

    { "birthIsoWeek" : 53 }
    { "birthIsoWeek" : 49 }
    { "birthIsoWeek" : 39 }

    この結果は、$weekを使用した場合とは異なります。 オペレーター。

    違いを示す例を次に示します。

    db.cats.aggregate(
      [
        {
          $project:
            {
              _id: 0,
              birthWeek: { $week: "$born" },
              birthIsoWeek: { $isoWeek: "$born" }
            }
        }
      ]
    )

    結果:

    { "birthWeek" : 1, "birthIsoWeek" : 53 }
    { "birthWeek" : 49, "birthIsoWeek" : 49 }
    { "birthWeek" : 38, "birthIsoWeek" : 39 }

    1. MongoDBを選ぶ理由–2022年にMongoDBを学ぶ10の理由

    2. Elasticsearch v.s.フィルタリングアプリケーション用のMongoDB

    3. MongoDbへの現在の接続数を確認してください

    4. クラスターでMongoDBを実行するためのベストプラクティス