首页 > 解决方案 > 如果我在查询中限制它,为什么 Firebase Firestore 会执行多个读取操作?

问题描述

我在 Kotlin 中有以下代码,在我按“columnA”订购后,我在其中检查了我的集合的最后一个文档:

db.collection("collection1").orderBy("columnA", Query.Direction.DESCENDING)
                .limit(1).get()
                .addOnCompleteListener {
                    if (it.isSuccessful) {
                       // Some operations
                    }
                }

据我所知,Cloud Firestore 在执行该操作时应该执行一次读取。这样对吗?那么,为什么 Firestore 会执行超过 30 次读取操作呢?

标签: androidfirebasekotlingoogle-cloud-firestore

解决方案


据我所知,firebase 在执行该操作时应该执行一次读取。这样对吗?

是的,没错。如果您将查询限制为只返回一个元素,您将始终只支付一次读取操作的费用。根据有关Firestore 定价的官方文档,据说:

查询的最低费用

对于您执行的每个查询,即使查询没有返回任何结果,也需要读取一个文档的最低费用。

因此,当您执行查询时,即使查询没有产生任何文档,也会产生一次读取操作的成本。

但是,如果您将 Firebase 控制台保持打开状态,则很可能会出现这些额外的读取操作,因为该控制台被视为任何其他客户端。或者,您执行其他查询,这些查询会导致您不知道的代码其他部分的读取操作。


推荐阅读