Estoy obteniendo la fecha guardada en db. Luego, estoy haciendo una pequeña matemática de fecha para restar la fecha de hoy de 3, lo que me da Fecha en formato - (DD-MM-YYYY). La fecha guardada en formato db también es la misma - (DD-MM-YYYY). ¿Alguien puede ayudarme a validar $lte
para esa fecha? No recibo ningún registro de DipData.
nodeCron.schedule("* * * * *", async function () { var DateNow = await moment().subtract(3, "days").format("DD-MM-YYYY"); console.log("Test Date Cron",DateNow); console.log("-->",new Date(DateNow.format("DD-MM-YYYY"))); let DipData = await userModel.find({}, { LastAppOpenedTime: { $lte : new Date(DateNow.format("DD-MM-YYYY")) }}) console.log("-----DipData ------->", DipData); });
Lo primero que debe identificar si hay una fecha almacenada en el documento de la colección mongo es una cadena o formato de fecha regular o formato de época. Si es una cadena, la consulta puede no dar un resultado preciso. Si hay formato de fecha o formato de época, puede consultar fácilmente su resultado con el resultado adecuado.
LastAppOpenedTime
, puede realizar una consulta con $toDate
en la consulta de búsqueda. var DateNow = moment().subtract(3, "days"); const DipData = await userModel.find({ LastAppOpenedTime: { $lte: new Date(DateNow) } });
Para los dos escenarios anteriores, funcionaría si su consulta está en forma precisa, como eliminar las primeras llaves vacías.
userModel.find({}, { LastAppOpenedTime: { $lte : new Date(DateNow) }})
a
userModel.find({ LastAppOpenedTime: { $lte : new Date(DateNow) }})
Hola, conseguí que esto funcionara haciendo algunos cambios.
const DateNow = await moment().subtract(3, "days"); console.log("Test Date Cron", DateNow); console.log("-->", new Date(DateNow)); const DipData = await userModel.find({ createdAt: { $lte: new Date(DateNow) } }); console.log("-----DipData ------->", DipData); res.status(200).json({ success: true, message: "Request was successful", DipData });
Noté que tenía el formato .("DD-MM-YYYY") al final de su función de momento, pero devolvió una cadena que no se pudo convertir con la nueva Fecha (DateNow). Eliminé el mío cuando probé, ya que la respuesta del momento funcionaba bien sin él.
Y también actualicé su userModel.find({}, { LastAppOpenedTime: { $lte : new Date(DateNow.format("DD-MM-YYYY")) }})
para eliminar el primer {} vacío. Entonces tendrías userModel.find({ createdAt: { $lte: new Date(DateNow) } });