Estoy creando una base de datos para un dentista. Los martes, la secretaria envía recordatorios a todos los pacientes que tienen cita para la próxima semana.
La consulta que utilicé en SQL es:
SELECT P.Name , P.Tel_No , A.Appointment_Time , A.Appointment_Date FROM Patient AS P INNER JOIN Booking AS B ON P.Patient_ID = B.Patient_ID INNER JOIN Appointment AS A ON B.Appointment_ID = A.Appointment_ID WHERE A.Reminder_Sent = 0 AND A.Appointment_Date BETWEEN ADDDATE(DAY, 6, CURDATE()) AND ADDDATE(DAY, 9, CURDATE());Quiero seguir la misma lógica que las dos últimas líneas. Así que el martes más 6 días es el lunes siguiente, y el martes más 9 días es el viernes siguiente. Si la cita se encuentra entre estas dos fechas, se envía un recordatorio.
¿Cómo extiendo esta lógica a MongoDB?
Me imagino que sería algo como:
"Appointment Time" : $range{ {$dateAdd:{currentdate(),unit:day,amount:6}, {$dateAdd:{currentdate(),unit:day,amount:9}}O algo como esto. ¡Cualquier ayuda sería apreciada!
Puede usar la variable $$NOW , así:
db.collection.aggregate([ { $match: { $expr: { $and: [ { $gt: [ "$Appointment_Date", { $add: [ "$$NOW", 518400000 // 6 days in miliseconds ] } ] }, { $lt: [ "$Appointment_Date", { $add: [ "$$NOW", 777600000 // 9 days in miliseconds ] } ] } ] } } } ])Si está utilizando la versión 5+ de Mongo, esta consulta se puede simplificar usando $dateAdd , asumí que no está en una versión tan avanzada.