Si desea obtener todas las cosas nuevas en los últimos 5 minutos, tendría que hacer algunos cálculos, pero no es difícil ...
Primero cree un índice en la propiedad con la que desea hacer coincidir (incluya la dirección de clasificación -1 para descender y 1 para ascender)
db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
Luego, consulte los documentos creados en los últimos 5 minutos (60 segundos * 5 minutos) ... porque JavaScript .getTime()
devuelve milisegundos que necesita multiplicar por 1000 antes de usarlo como entrada para el new Date()
constructor.
db.things.find({
createdAt: {
$gte: new Date(new Date().getTime()-60*5*1000).toISOString()
}
})
.count()
Explicación para new Date(new Date().getTime()-60*5*1000).toISOString()
es la siguiente:
Primero calculamos "hace 5 minutos":
new Date().getTime()
nos da la hora actual en milisegundos
- Queremos restar 5 minutos (en ms) de eso:
5*60*1000
- Simplemente multiplico por 60
segundos para que sea fácil de cambiar. Solo puedo cambiar 5
a120
si quiero 2 horas (120 minutos).
new Date().getTime()-60*5*1000
nos da 1484383878676
(hace 5 minutos en ms)
Ahora necesitamos alimentar eso en un new Date()
constructor para obtener el formato de cadena ISO requerido por las marcas de tiempo MongoDB.
{ $gte: new Date(resultFromAbove).toISOString() }
(consulta mongodb .find ())
- Como no podemos tener variables, lo hacemos todo de una vez:
new Date(new Date().getTime()-60*5*1000)
- ... luego convertir a cadena ISO:
.toISOString()
new Date(new Date().getTime()-60*5*1000).toISOString()
Nos da 2017-01-14T08:53:17.586Z
Por supuesto, esto es un poco más fácil con las variables si está utilizando el controlador node-mongodb-native, pero esto funciona en el shell mongo, que es lo que generalmente uso para verificar las cosas.