如果我有一份文档ID列表,并且想从Firestore中删除它们,那么最有效的方法是什么?我目前在列表上使用循环:
document_ids = ["xyz123", "abc0987", "tvu765", ...] # could be up to 30 IDs
for id in document_ids:
database.collection("documents").document(id).delete()
这是通过从前端到Flask路由的AJAX调用完成的,一旦完成,它就会发送回一个响应,但是当ID超过20时,可能需要几秒钟来完成该过程。
在这里,有没有办法说出这些内容?
答案 0 :(得分:1)
您现在所做的几乎是唯一的方法。没有类似SQL的“从...哪里删除...”命令。您必须使用其ID删除每个文档。
答案 1 :(得分:1)
也许您可以使用multiprocessing
来加速io绑定操作。
import multiprocessing
import time
from google.cloud import firestore
document_ids = ["xyz123", "abc0987", "tvu765", ...] # could be up to 30 IDs
def delete_doc(doc_id):
database = firestore.Client()
database.collection("documents").document(doc_id).delete()
t_start = time.perf_counter()
processes = list()
for id in document_ids:
p = multiprocessing.Process(target=delete_doc, args=[id,])
p.start()
processes.append(p)
for p in processes:
p.join()
t_finish = time.perf_counter()
print("Total Elapsed Time: {} s".format(round(t_finish - t_start, 3)))