我数据库中的项目具有多个保留的数组,这些数组由具有两个项目(开始和结束)的对象表示。 例如:
"resa": [
{
"_id": "5cf2a38372373620263c84f1",
"start": "2019-06-01T15:23:00.000Z",
"end": "2019-06-01T16:23:00.000Z"
},
{
"_id": "5cf2a3a772373620263c84f2",
"start": "2022-03-05T16:23:00.000Z",
"end": "2022-03-05T17:23:00.000Z"
}
]
我的过滤器需要在给定开始和结束时间段后向我返回可用可用的对象。
我的尝试一直到:
Room.find({
$or: [
{ $and: [{ resa: { $elemMatch: { start: { $lt : req.query.start } } } },{ resa: { $elemMatch: { end: { $lt : req.query.start } } } }] },
{ $and: [{ resa: { $elemMatch: { start: { $gt : req.query.end } } } },{ resa: { $elemMatch: { end: { $gt : req.query.end } } } }] }
]
},
我的逻辑是,对于给定resa中每个项目的每个开始和结束日期:
或
在给定的时间段我的房间可用。
我是否错过了一些$ query运算符在mongo中的功能,还是存在一种更合理的方法来应用此过滤器?