sql >> Base de Datos >  >> NoSQL >> MongoDB

Consulta Mongoose para documentos de las últimas 24 horas, solo un documento por hora

Usar agregación

este es un gran artículo para saber cómo agrupar sus documentos, luego elija un elemento por documento.

También debe filtrar los documentos de las últimas 24 horas, luego proyectar para buscar y hour de marca de tiempo.

Su consulta será algo como esto

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