如何在Firestore中查询与指定范围存在交集的文档?
Firestore 查询与指定范围存在交集的文档
你需要的是判断文档的[from, to]范围和目标范围[targetFrom, targetTo]是否存在交集,正确的查询条件要基于两个范围重叠的逻辑规则:
两个范围存在交集的充要条件是:
文档的
from≤ 目标范围的to,并且文档的to≥ 目标范围的from
具体查询代码
以JavaScript为例,对应你的目标范围from:3,to:6,代码如下:
const targetFrom = 3; const targetTo = 6; db.collection('你的集合名称') .where('from', '<=', targetTo) .where('to', '>=', targetFrom);
逻辑验证(对应你的示例)
- 文档1:
from=2 ≤6且to=4 ≥3→ 符合条件 - 文档2:
from=4 ≤6且to=8 ≥3→ 符合条件 - 文档3:
from=7 >6→ 不满足第一个条件,排除 - 文档4:
from=3 ≤6且to=5 ≥3→ 符合条件 - 文档5:
to=2 <3→ 不满足第二个条件,排除
结果正好是你预期的文档1、文档2、文档4。
注意事项
首次运行该查询时,Firestore会返回索引缺失的错误,你可以直接按照错误提示中的指引,到Firestore控制台自动创建对应的复合索引即可。
内容的提问来源于stack exchange,提问作者Deny Hilhamsyah
相关产品推荐
相关产品推荐

