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

Mongoose заявка за документи от последните 24 часа, само един документ на час

Използвайте агрегиране

това е страхотна статия за това как да групирате документите си, след това изберете по един елемент на документ.

Трябва също така да филтрирате документи за последните 24 часа, след това да проектирате за намиране и hour от клеймо за време.

Вашето запитване ще бъде нещо подобно

collection.aggregate([
  {
    "$filter": {
      "createdAt": { $gt: new Date(Date.now() - 24*60*60 * 1000) }
    }
  },
  {
    "$project": {
      "h": {"$hour" : "$createdAt"},
      "original_doc": "$$ROOT"
    }
  },
  {
    "$group": {
      "_id": { "hour": "$h" },
      "docs": { $push: "$original_doc" } 
    }
  },
  { 
    $replaceRoot: {
      newRoot: { $arrayElemAt: ["$docs", 0] }
    }
  }
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Приложете съпоставяне на типове с mgo

  2. Как да настроите useMongoClient (Mongoose 4.11.0)?

  3. защо не мога да стартирам mongodb

  4. Как да актуализирате стойност на масив в Mongoose

  5. Как да намерите времето за последно актуализиране/вмъкване/изтриване на колекция mongodb без поле objectid