MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Menghitung rata-rata untuk 200 hari terakhir dalam agregasi MongoDB dan NodeJS

Anda harus memfilter dokumen sebelum mengelompokkannya. Seharusnya seperti ini:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mengambil nilai dari mongoDB, dengan nama kuncinya?

  2. Hubungkan ke mongodb yang berjalan di dalam Docker

  3. Cara terbaik untuk terhubung ke MongoDB menggunakan Node.js

  4. Mengapa disarankan untuk tidak menutup koneksi MongoDB di mana pun dalam kode Node.js?

  5. Apakah konektor Mongo mendukung penambahan bidang sebelum dimasukkan ke Elasticsearch?