gpt4 book ai didi

python - 获取 Firestore 集合大小

转载 作者:行者123 更新时间:2023-12-04 15:48:58 25 4
gpt4 key购买 nike

TL;DR 是否有 API 来获取 firestore 集合大小而不是我们必须手动这样做?

所以根据他们的docs , 可以通过识别它们的数据类型来计算文档大小。

示例代码如下所示:

import datetime

def calculate_doc_size(data):
if isinstance(data, dict):
size = 0
for key, value in data.items():
key_size = len(key) + 1
value_size = calculate_doc_size(value)
key_pair_size = key_size + value_size
size += key_pair_size
return size
elif isinstance(data, str):
return len(data) + 1
elif any([isinstance(data, bool), data is None]):
return 1
elif isinstance(data, (datetime.datetime, float, int)):
return 8
elif isinstance(data, list):
return sum([calculate_doc_size(item) for item in data])

def calculate_doc_name_size(path):
size = 0
for collection in path.split('/'):
size += len(collection) + 1
return size + 16

document = {'a': {'a': 1, 'b': 2, 'c': None}, 'b': [1, 2, 3], 'c': [{'a': 1}]}
size = calculate_doc_name_size('database/account1/my_doc_id') + calculate_doc_size(document) + 32
print(size) # prints 139

所以我的想法是使用云函数计算 on write 事件中的文档大小,并维护一个计数器,该计数器指定任何给定时间点的集合大小。 (大小以字节为单位)

By size I mean not the number of keys in the document but the storage taken.

是否有更好的方法来获取 firestore 集合/文档大小?

用例:
假设我想像 gmail 那样通过存储空间限制帐户(每个用户 15GB)。我想通过每个帐户都是由 account_id 标识的集合来实现这一点。示例:

- database
- account 1
- collection 1
- collection 2
- account 2
- collection 1
- collection 2

相关帖子:calculating size of google firestore documents

最佳答案

Is there a better way to get the firestore collection / document size?

不,这几乎就是我要做的。好吧...总的来说,我会尽量避免此类操作,因为它们非常不稳定。但是,如果您真的需要知道集合中的文档占用了多少空间,则可以通过汇总每个文档的大小总和来计算它,而 Cloud Functions 似乎是一种在每次更新时执行该计算的自然技术。

关于python - 获取 Firestore 集合大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54661581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com