Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

160
Vistas
recuperar todos aquellos cuya `fecha` esté dentro de los últimos 6 minutos

Tengo una colección de Product almacenada en MongoDB. Tiene una date de atributo:

 const productSchema = new mongoose.Schema<ProductAttrs>({ date: { type: Date, required: true, } ... })

Me gustaría recuperar todos los productos cuya date se encuentre dentro de los últimos 6 minutos en comparación con la hora actual. ¿Cuál es la forma eficiente de recuperar eso en mangosta?

Estoy usando express.js + mecanografiado + mongoose v5.11 en mi proyecto.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Debe utilizar Mongoose para buscar todos los registros en los que el tiempo sea superior al now - 6 minutes .
No tengo forma de probarlo, pero la consulta debería verse así:

 const sixMinutes = (6*60*1000); // 6 minutes let sixMinutesAgo = new Date(); sixMinutesAgo.setTime(sixMinutesAgo.getTime() - sixMinutes); const products = Product.find({ date: { $gte: sixMinutesAgo } })
over 4 years ago · Santiago Trujillo Denunciar

0

Si la versión de su servidor MongoDB es 5.0, podría usar el nuevo operador $dateDiff . En este caso, es muy útil y ni siquiera necesita un aggregate :

 db.collection.find({ "$expr": { "$lte": [ { "$dateDiff": { startDate: "$date", endDate: new Date(), unit: "minute" } }, 6 ] } })

Le permite especificar el campo de la unit , lo que hace que la consulta sea muy sencilla en mi opinión.

$expr evalúa una expresión y devuelve true o false , solo eso. Si el resultado de la expresión es verdadero, se devuelve la fila; de lo contrario, no lo es.

$lte significa menor o igual (el operador <= ) y devuelve verdadero solo cuando el primer argumento es menor o igual que el segundo operador. Básicamente, esto es lo que hace en pseudocódigo:

 foreach doc in collection if (minute)(currentDate - document.date) <= 6 then return document
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda