Mongoose 查询生成器。或未返回预期结果

Mongoose Query Builder .or not returning expected results

上下文
我正在构建一个查询,用户可以在其中输入日期范围来搜索 'Player' 文档。查询应该 return 任何开始和结束日期与查询日期重叠的玩家。我通过使用 OR 条件来执行此操作,其中玩家的结束日期在查询的开始日期之后或玩家的开始日期在查询的结束日期之前。查询中的两个日期都是可选的,允许用户仅指定结束日期或开始日期,或者既不指定 return 所有相关文档。

问题
当仅指定两个查询日期之一时,查询有效(请参见下面的屏幕截图)。但是,如果指定了两个日期(功能上忽略两个查询参数),它会 return 所有文档。

代码

let query = Player.find({'casino': user.casino});
let queryArray = [];
if(req.body.startDate) {
        queryArray.push({playerEndDtm: {$gt: moment(req.body.startDate).toDate()}});
}
if(req.body.endDate) {
    queryArray.push({playerStartDtm: {$lt: moment(req.body.endDate).endOf('day').toDate()}});
}
if(queryArray.length > 0) {
    query.or(queryArray);
}

屏幕截图
当指定两个查询日期时:
结果:

仅指定1个查询日期时:
结果:

任何人都可以帮助我确定我做错了什么吗?谢谢!

if(req.body.endDate) {
    queryArray.push({playerStartDtm: {$lt: 
    moment(req.body.endDate).endOf('day').toDate()}});
}

在上面的查询中,您只是检查了结束日期。您需要检查日期之间的范围:

 ({ playerStartDtm : { $gt :  expression, $lt : expression}})