python 获取集合firestore中的文档数

3pvhb19x  于 2023-04-04  发布在  Python
关注(0)|答案(2)|浏览(150)

有没有可能使用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;
});

如何用Python做到这一点?

lvjbypge

lvjbypge1#

Firestore(像许多NoSQL数据库一样)没有内置的聚合查询。如果你想确定文档的数量,你有两个主要的选择:
1.读取所有文档,然后在客户端中进行计数。
1.将文档计数保存在数据库本身中,然后在每次添加/删除操作时更新它。
虽然第一种方法更简单,但它的可扩展性较差,因为您最终会让客户端阅读所有文档来确定计数。这就是为什么您会发现大多数关于计数文档的问题/文章都集中在第二种方法上。
有关此方面的更多信息,请参阅:

wb1gzix0

wb1gzix02#

2023年2月新增

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

用法

目前,文档中没有太多关于它的内容,但下面是我如何使用它的。
在6.1.0或更高版本中需要firebase-admin

初始化

from firebase_admin import firestore

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

统计集合中的文档数

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)

查询统计单据数

simple_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)

相关问题