MongoDB日期范围查询:如何用$or完善多条件日期筛选逻辑
MongoDB日期范围查询优化
你需要通过$or组合两类筛选条件,同时处理字符串格式的日期字段转换,以下是修改后的查询代码:
db.collection.find({ $expr: { $or: [ // 第一类条件:文档arrival >= 输入arrival 且 < 输入check-out { $and: [ { $gte: [ { $dateFromString: { dateString: "$arrival" } }, new Date("2024-06-11T06:00:00.000Z") ] }, { $lt: [ { $dateFromString: { dateString: "$arrival" } }, new Date("2024-06-16T06:00:00.000Z") ] } ] }, // 第二类条件:文档check-out > 输入arrival { $gt: [ { $dateFromString: { dateString: "$check-out" } }, new Date("2024-06-11T06:00:00.000Z") ] } ] } })
关键说明:
- 用
$or包裹两个独立筛选分支,分别对应你需求中的两类文档 - 所有日期比较都通过
$dateFromString将文档内的字符串日期转换为MongoDB可识别的日期类型 - 输入的日期参数用
new Date()转换为日期对象,确保类型匹配
内容的提问来源于stack exchange,提问作者Arturo Martinez
相关产品推荐
相关产品推荐

