You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firebase中对超10个值的数组使用not in查询集合?

Firestore "not in" 操作的批量查询困境与优化疑问

针对Firestore查询的10个值限制,之前的方案是按10个一组分批请求,这种方式对in操作可行,最后去重即可。

但这套逻辑完全不适用于**"not in"**操作。

示例:假设某集合中有ID为1到21的文档(本示例忽略">"或"<"运算符的存在),我们有一个要忽略的ID数组(范围为0到20),希望仅检索出不在该范围内的1个文档(即ID为21的文档)。

正常情况下,直接用"not in"操作并设置查询限制为1个文档就能解决,但not in数组最多只能包含10个值,这就陷入了困境:

  • 必须将黑名单数组拆分为两部分:[1到10]、[11到20]
  • 无法再设置查询限制为1个文档,因为两次查询返回相同结果的概率极低
  • 最终需要执行2次查询:第一次获取排除1-10后的11个文档,第二次获取排除11-20后的11个文档,再取两次结果的交集才能得到ID为21的文档

简言之,我们浪费了22次读取操作才得到1个目标文档。随着文档总量和黑名单数组的增长,获取交集所需的读取次数会呈指数级增长。

这根本不是解决方案,只是一个糟糕的权宜之计,感觉这是Firestore的一个重大缺陷。真的没有更好的解决办法吗?我目前不确定该如何处理这个问题。

内容的提问来源于stack exchange,提问作者salesp07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:10:04