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

如何使用List<String>在Firestore中查询匹配ID或指定字段的文档

问题诊断

你当前的写法存在错误:isEqualTo是单值匹配运算符,传入字符串列表后,只会匹配BusstopName字段值与整个列表完全相等的文档,无法实现「查询字段值在列表范围内的文档」的需求。

解决方案

Firestore 原生提供whereIn运算符用于该场景,直接替换isEqualTo即可,修改后的代码如下:

Future <void> saveRoute(List<String> _selectedBusStop) async{
  Firestore.instance.collection('markers').where('BusstopName', whereIn: _selectedBusStop)
      .snapshots().listen((location) {
    if(location.documents.isNotEmpty){
      for (int i = 0; i < location.documents.length; i++){
        initRoute(location.documents[i].data, location.documents[i]);
      }
    }
  });
  setState(() {
  });
}

注意事项

  • whereIn单次查询最多支持传入10个匹配值,如果你的_selectedBusStop列表长度超过10,需要拆分成多个批次查询后再合并结果。
  • 请确保BusstopName字段存储类型为字符串,与列表内元素类型一致,否则会出现匹配失败的问题。
  • 如果后续有「查询字段值不在指定列表内」的需求,可以使用whereNotIn运算符,同样遵循单次最多10个值的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:54:02