如何获取集合中文档的数量?

Edi*_*uza 3 firebase google-cloud-firestore

如果集合中有大量文档,我可以在不必加载整个集合的情况下获取文档数量吗?

db.collection('largecollection').get().then(snapshot => {
   length = snapshot.size;
})
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 5

没有内置 API 可以获取集合中文档的数量。因此,默认情况下,您必须下载所有文档才能对其进行计数。

正如雷诺评论的那样,常见的解决方法是保留一个单独的计数器,每次添加/删除文档时都会更新该计数器。您可以在应用程序内执行此操作,每次添加/删除文档时都会用事务更新计数器。但在服务器中执行此操作更为可靠,例如 Cloud Functions for Firebase。有关此方法的示例,请参阅repofunctions-samples。虽然该示例适用于 Firebase 实时数据库,但该方法同样适用于 Firestore。

另请参阅 Firestore 文档中有关分布式计数器的部分。