sql >> Databáze >  >> NoSQL >> MongoDB

Celkový počet hodin sběru objektů Mongodb

Můj návrh by byl tento:

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" }] } } }
])

Mějte na paměti, že funguje pouze po dobu jednoho roku, tj. 366 dní.



  1. Mongoose Query:Najděte prvek uvnitř pole

  2. Vložení aktuálního data a času do mongodb

  3. Vytváří knihovna Redis vlastní vlákno pro asynchronní zpětná volání

  4. Jaký je rozdíl mezi MongoDB Atlas a MongoDB Atlas pro AWS