sql >> Database >  >> NoSQL >> MongoDB

Het gemiddelde berekenen van de afgelopen 200 dagen in MongoDB-aggregatie en NodeJS

U moet documenten filteren voordat u ze groepeert. Zou zo moeten zijn:

db.collection.aggregate([
   {
      $addFields: {
         DateObj: {
            $regexFindAll: { input: "$Date", regex: "\\d+" }
         }
      }
   },
   {
      $set: {
         DateObj: {
            $dateFromParts: {
               year: { $toInt: { $arrayElemAt: ["$DateObj.match", 0] } },
               month: { $toInt: { $arrayElemAt: ["$DateObj.match", 1] } },
               day: { $toInt: { $arrayElemAt: ["$DateObj.match", 2] } },
               hour: { $toInt: { $arrayElemAt: ["$DateObj.match", 3] } },
               minute: { $toInt: { $arrayElemAt: ["$DateObj.match", 4] } },
               second: { $toInt: { $arrayElemAt: ["$DateObj.match", 5] } },
               timezone: "Europe/Zurich"
            }
         }
      }
   },
   {
      $match: {
         $expr: {
            $gte: ["$DateObj", { $subtract: ["$$NOW", 200 * 60 * 60 * 24 * 1000] }]
         }
      }
   },
   {
      "$group": {
         _id: null,
         "Volume": {
            "$avg": "$Volume"
         }
      }
   }
])



  1. Moet ik een mangoestverbinding handmatig sluiten?

  2. Hoe Redis te gebruiken met Python

  3. Express js, mongodb:ReferenceError:db is niet gedefinieerd wanneer db wordt vermeld buiten de post-functie

  4. ConfigurationError:Server op 127.0.0.1:27017 meldt draadversie 0, maar deze versie van PyMongo vereist minimaal 2 (MongoDB 2.6)