根据firebase文档,当您使用计数聚合查询时,您将根据完成的索引读取数量付费。 然而,这与 Frank van Puffelen 的声明相矛盾 新的 count() 聚合函数性能 谁说根据响应查询返回的计数值向您收费。 如果您执行涉及两个“where”子句的计数查询,例如
.where("country", isEqualTo: "United States")
.where("age", isGreaterThan: "100")
第一个 where 子句找到 100,000 个匹配项,第二个 where 子句将匹配数减少到 900,则返回的计数为 900。根据 Frank 的说法,您需要为一次读取付费(900 除以 1000,再加上 1)。 但是,由于读取了 100,000 个索引,我想知道您是否需要按 100,000 次除以 1000 次读取付费,即按 100 次读取付费。
此外,firebase 文档在这里 https://cloud.google.com/firestore/pricing#index-reads 这么说
最多具有一个范围字段的查询不收取索引费用 条目已读。
因此,对于我上面给出的示例,这意味着您根本不需要为任何索引读取付费。 那么对于我给出的例子来说这是正确的
Firestore 对您指定的查询使用专用索引。因此,您的两个条件标识所使用的复合索引中的单个数据片。
如果符合您的条件的计数查询返回的计数为 900,则它扫描了该计数的 900 个索引项,并且您需要为此支付 1 个文档的读取费用。