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

Mongodbコレクションオブジェクトの合計時間コレクション

    私の提案はこれです:

    db.collection.aggregate([
       {
          $addFields: {
             duration: {
                $toLong: {
                   $dateFromParts: {
                      year: 1970,
                      hour: { $toInt: { $first: { $split: ["$durationHrs", ":"] } } },
                      minute: { $toInt: { $last: { $split: ["$durationHrs", ":"] } } },
                   }
                }
             }
          }
       },
       { $group: { _id: null, durations: { $sum: "$duration" } } },
       {
          $set: {
             h: {
                $toInt: {
                   $sum: [{
                      $multiply: [
                         { $dayOfYear: { $toDate: "$durations" } }, 24]
                   },
                   -24,
                   { $hour: { $toDate: "$durations" } }]
                }
             },
             m: { $minute: { $toDate: "$durations" } }
          }
       },
       { $project: { durations: { $concat: [{ $toString: "$h" }, ":", { $toString: "$m" }] } } }
    ])
    

    最長1年間、つまり366日間のみ機能することに注意してください。



    1. Mochaがテストスイートで最初にロードするファイルを知る方法

    2. $weekmongodbクエリでその週に一致するレコードがない場合にその週に0を表示する方法

    3. ASP.NETCoreControllerでのStackExchange.Redisの使用

    4. タイムスタンプに基づいて選択し、タイムスタンプをゼロで更新します