MongoDB查询与指定范围存在交集的From/To区间文档
MongoDB区间交集查询语句
需求:查询集合中由From、To字段定义的区间,与指定范围(示例为201-350)存在交集的文档。
交集逻辑分析
两个区间[From, To]与[201, 350]存在交集的核心判断是:文档区间不完全在指定范围的左侧,也不完全在右侧。完全不相交的两种情况为:
- 文档区间的右端点小于指定范围的左端点(
To < 201) - 文档区间的左端点大于指定范围的右端点(
From > 350)
因此,只需排除这两种情况,即可得到所有存在交集的文档。
对应的MongoDB查询语句
db.yourCollectionName.find({ $nor: [ { To: { $lt: 201 } }, { From: { $gt: 350 } } ] })
验证说明
将上述语句中的yourCollectionName替换为实际集合名后,会匹配示例中符合条件的Object #2、#3、#4、#5:
- Object #2(150-300):区间与201-350重叠
- Object #3(210-230):区间完全包含在201-350内
- Object #4(290-300):区间完全包含在201-350内
- Object #5(347-349):区间完全包含在201-350内
内容的提问来源于stack exchange,提问作者Valentin Borisenko
相关产品推荐
相关产品推荐

