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

Cloud Firestore实时监听器单文档变更时会计7次读取吗?

问题:Firestore监听单个文档变更时的读取计数疑问

我在代码中设置了一个监听7个文档的Firestore监听器,代码如下:

Firestore.firestore()
            .collection(FirestorePaths.days)
            .whereField(DayKeys.date, in: CalendarService.shared.currentWeek)
            .whereField(DayKeys.fieldId, isEqualTo: "JAfWuBindnh4jIfsVGh4Vl3AvfU2")
            .addSnapshotListener { querySnapshot, error in

                if let error = error {
                    print(error)
                    return
                }
                
                querySnapshot?.documentChanges.forEach { diff in
                           if (diff.type == .added) {
                               print("New day: \(diff.document.data())")
                           }
                           if (diff.type == .modified) {
                               print("Modified day: \(diff.document.data())")
                           }
                           if (diff.type == .removed) {
                               print("Removed day: \(diff.document.data())")
                           }
                       }
                
                _ = querySnapshot?.documents.compactMap {
                    print($0.metadata.isFromCache ? "Cache" : "Server")
                }
                
            }

当服务器端有一个文档发生变更时,我得到如下输出:

Modified day ...

    Server
    Server
    Server
    Server
    Server
    Server
    Server

我想知道这种情况会被计为7次读取还是仅1次读取?


回答

  • 这种情况只会被计为1次读取,而非7次。
  • Firestore的实时监听计费逻辑是:初始建立监听时,会按查询匹配到的文档数量(这里是7个)收取对应次数的读取费用;但后续当只有单个文档变更时,仅针对发生变更的那一个文档收取1次读取费用。
  • 你看到快照返回所有7个文档(对应7条Server日志)是Firestore的默认行为——变更触发的快照会返回当前查询的完整结果集,但计费只统计实际发生变更的文档,不会重复收取未变更文档的读取费用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:15:40