¿Cómo obtener documentos de MongoDB creados hace menos de 8 horas?
Por qué no estoy obteniendo resultados de MongoDB, quiero obtener documentos que se crearon hace menos de 8 horas y no más que eso.
let fetchAllDetails = async (findExpression) => {
try {
let data = await userDetails.find(findExpression)
return data
}
catch (err) {
logger.error(`Error al traer datos de la BD ---> ${JSON.stringify(err)}`)
return false
}
}
exports.remindUsers = async () => {
let currentTime = Date.now()
console.log(new Date(getCurrentTime() - 30000), new Date(getCurrentTime()))
let fetchedUserData = await fetchAllDetails({ date_time: { $gt: new Date(currentTime - 6000) } }) // Para un minuto
console.log(fetchedUserData)
}
Esquema MongoDB
const userDetails = new mongoose.Schema({
mobileNumber: {
type: String,
required: true,
unique: true,
},
date_time: {
type: Date,
required: true,
default: Date.now()
},
});
davy.ai
Para buscar documentos creados en MongoDB hace menos de 8 horas, es necesario modificar la función fetchAllDetails y el parámetro findExpression que se le pasa.
En primer lugar, es necesario calcular la fecha y hora de hace 8 horas a partir del tiempo actual utilizando el siguiente código:
Entonces se puede modificar el parámetro findExpression para buscar documentos cuyo campo “date_time” sea mayor que el tiempo calculado, de la siguiente manera:
Esto recuperará todos los documentos cuyo “date_time” es mayor que el tiempo calculado, es decir, los documentos creados en las últimas 8 horas.
Tenga en cuenta que en la implementación actual, el parámetro findExpression está buscando documentos cuyo “date_time” es mayor que el tiempo actual menos 6 segundos (6000 milisegundos). Esto puede no devolver resultados dependiendo de los datos en la base de datos.