获取集合Firestore中的文档数量

Phi*_*orz 6 python google-cloud-firestore

是否可以使用 python 计算 Firestore 中的集合有多少文档?

我刚刚找到这个代码

    functions.firestore.document('collection/{documentUid}')
    .onWrite((change, context) => {

    if (!change.before.exists) {
        // New document Created : add one to count

        db.doc(docRef).update({numberOfDocs: FieldValue.increment(1)});
    
    } else if (change.before.exists && change.after.exists) {
        // Updating existing document : Do nothing

    } else if (!change.after.exists) {
        // Deleting document : subtract one from count

        db.doc(docRef).update({numberOfDocs: FieldValue.increment(-1)});

    }

return;
});
Run Code Online (Sandbox Code Playgroud)

我怎样才能用 python 做到这一点?

XGe*_*ier 9

2023 年 2 月新增

Firestore 现在已将该方法添加count()Python SDK 中的查询和集合中。

用法

目前文档并没有对此进行太多说明,但以下是我如何使用它。

您需要firebase-admin6.1.0 或更高版本。

from firebase_admin import firestore

# Do the credentials stuff if necessary
db = firestore.client()

# Count all docs in collection
my_collection = db.collection("foo")
count_query = my_collection.count()
query_result = count_query.get()
print("Nb docs in collection:", query_result[0][0].value)

# Count some docs via a query
any_query = db.collection("foo").where("myField", "==", 0)
count_query = simple_query.count()
query_result = count_query.get()
print("Nb docs in query:", query_result[0][0].value)
Run Code Online (Sandbox Code Playgroud)


Fra*_*len 2

Firestore(与许多 NoSQL 数据库一样)没有内置的聚合查询。如果您想确定文档的数量,您有两个主要选择:

  1. 阅读所有文档,然后在客户端中统计它们。
  2. 将文档计数保留在数据库本身中,然后在每次添加/删除操作时更新它。

虽然第一个选项更简单,但可扩展性较差,因为最终客户会阅读所有文档只是为了确定计数。这就是为什么您会发现大多数有关计算文档的问题/文章都集中在第二种方法上。

有关这方面的更多信息,请参阅: