es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

MongoDB – Cómo obtener una fecha que se encuentra entre dos fechas

Estoy creando una base de datos para un dentista. Los martes, la secretaria envía recordatorios a todos los pacientes que tienen una 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 últimas dos 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 cae entre estas dos fechas, se envía un recordatorio.

¿Cómo puedo extender esta lógica a MongoDB?

Imagino que sería algo como esto:

"Appointment Time" : {
    $range: {
        {$dateAdd: {currentdate(), unit:day, amount:6}}, 
        {$dateAdd: {currentdate(), unit:day, amount:9}}
    }
}

O algo similar a esto. ¡Cualquier ayuda sería apreciada!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para consultar citas dentro de un rango de fechas en MongoDB, puedes usar los operadores $gte (mayor o igual que) y $lt (menor que). Aquí tienes un ejemplo de consulta basado en tu consulta de SQL:

    db.appointments.find({
        "reminder_sent": false,
        "appointment_date": {
            "$gte": new Date(),
            "$lt": new Date(new Date().setDate(new Date().getDate() + 9))
        }
    }).populate('patient', ['name', 'tel_no']).sort('appointment_time');
    

    En esta consulta, buscamos citas donde reminder_sent es falso y la appointment_date se encuentra entre hoy y 9 días en el futuro. También estamos llenando el campo patient con su nombre y número de teléfono, y ordenando los resultados por appointment_time.

    Ten en cuenta que en MongoDB, las fechas se representan como objetos ISODate. El constructor new Date() devuelve la fecha y hora actual, y setDate() se puede usar para agregar o restar días a un objeto de fecha.

    ¡Espero que esto ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.