使用Mongo查找两个日期之间的文档

时间:2019-12-17 06:40:52

标签: node.js mongodb

所以我有一个需要创建事件的问题。但是,这些事件在另一个事件之间不能有开始/结束时间。我希望我的活动有一个开始/结束时间,因为它们将是那些日期范围内的唯一活动

例如,如果我有一个活动:

starts at: 4pm
ends at: 5pm

我不能再发生以下事件:

starts at: 4:30 **( this opening time is between start/ends from above event )**
ends at: 5:30

与:

starts at: 3pm
ends at: 6pm

**this one is containing the first event too**

这是结构:

{ 
  "event" : "Event 1"
  "startDate": 2019-10-18T20:00:00.363Z, //
  "endDate": 2019-10-18T21:00:00.363Z // 
}

我该如何用mongo解决这个问题?预先感谢!

1 个答案:

答案 0 :(得分:0)

{$or:[
{$and:[{startDate: { $gte: new Date(data.startDate), $lte: new Date(data.endDate) }}]},
{$and:[{endDate: { $gte: new Date(data.startDate), $lte: new Date(data.endDate) }}]}
]}

首先使用上述查询检查在给定日期之间的数据库中是否有任何记录。如果您得到的任何记录都意味着在给定日期之间已经存在事件,那么您就可以抛出异常,否则可以存储记录。