MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose:Как да получите статистически данни за качване на последните 7 дни от DB?

Заявката, която описвате, е групиране на поредица от документи по ден, когато тези документи съдържат UTC дата и час.

MongoDB съхранява вътрешно дати/часове като брой милисекунди от 1 януари 1970 г., така че първата стъпка ще трябва да бъде изчисляване на началото на деня за всеки документ, след което да се групира по тази стойност на началото на деня.

Ако използвате MongoDB 5.0, можете да използвате $dateTrunc оператор:

{$dateTrunc:{date:"$createdAt",unit:"day",timezone:"America/New_York"}}

За по-стари версии можете или да изчислите обекта за дата, който представлява началото на деня, или да създадете низ, съдържащ само датата.

За опцията за низ:

{$concat: [
   {$toString:{$year:{ date:"$createdAt", timezone:"America/New_York" }}},
   "-",
   {$toString:{$month:{ date:"$createdAt", timezone:"America/New_York" }}},
   "-",
   {$toString:{$dayOfMonth:{ date:"$createdAt", timezone:"America/New_York" }}},
]}

Така че като цяло тръбопроводът за агрегиране би бил:

  • $match за избор на документи в желаната времева рамка
  • $project за изчисляване на началото на деня за всеки документ
  • $group до началото на деня, отчитайки броя на повторенията
  • по-нататъшни етапи за конвертиране на документа в желания формат


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Актуализирайте елемента на масива по id с mongo заявка

  2. Как да конвертирате низ в objectId в LocalField за $lookup Mongodb

  3. Време за изчакване за MongoConnection

  4. споделяне на db връзка в цялото приложение в mongoose

  5. Намиране на вграден документ по конкретно свойство в Mongoose, Node.js, MongodDB