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

Firestore中.where()与.doc()的数据库读取次数差异

Firebase Firestore 两种读取方式的读取次数差异

结论:两种方式的读取次数不一定相同,分以下场景说明:

  • 当目标文档存在时:

    • 使用 collection('users').doc(widget.uid).get() 直接获取文档,读取次数为1次
    • 使用 collection('users').where('uid', isEqualTo, widget.uid).get() 查询,若uid字段是唯一值(通常用户ID都是唯一的),查询返回1个匹配文档,读取次数也为1次,此时两者次数相同
  • 当目标文档不存在时:

    • 直接调用doc(widget.uid).get():Firestore需要验证该文档是否存在,会消耗1次读取次数
    • 使用where查询:由于没有匹配的文档返回,不会产生读取次数(0次),此时两者次数不同

额外补充:

  • 直接通过文档ID获取文档不需要任何索引,而where查询需要uid字段存在对应的索引(开发环境下Firestore会自动给出创建索引的提示)
  • 如果uid字段不是唯一值,where查询可能返回多个文档,此时读取次数等于返回的文档数量,和直接获取单个文档的1次读取完全不同

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:01:20