Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

159
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!