MongoDB-如何获得介于两个日期之间的日期



我正在为一位牙医创建一个数据库。每周二,秘书都会向所有预约下周的患者发送提醒。

我在SQL中使用的查询是:

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());

我想遵循与最后两行相同的逻辑。所以周二加6天就是下周一,周二加9天就是下周五。如果约会在这两个日期之间,则会发送提醒。

如何将此逻辑扩展到MongoDB?

我想它会是这样的:

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

或者类似的东西。任何帮助都将不胜感激!

您可以使用$$NOW变量,如下所示:

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
]
}
]
}
]
}
}
}
])

Mongo游乐场

如果您使用的是Mongo版本5+,则可以通过使用$dateAdd简化此查询,我只是假设您没有使用这样的高级版本。

相关内容

  • 没有找到相关文章

最新更新