MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête Mongoose pour les documents des dernières 24 heures, un seul document par heure

Utiliser l'agrégation

c'est un excellent article pour savoir comment regrouper vos documents, choisissez un élément par document.

Vous devez également filtrer les documents des dernières 24 heures, puis projeter pour trouver et hour à partir de l'horodatage.

Votre requête ressemblera à ceci

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