删除 Firestore 中的集合和子集合
问题陈述:
在 Firestore 数据库中列表的集合,每个列表包含两个子集合:员工和位置。当用户希望删除特定列表时,仅删除列表文档并不会删除子集合。出现此问题的原因是 Firestore 文档表明删除包含子集合的文档不会自动删除这些子集合。
建议的解决方案:
1.迭代删除子集合:
2.使用deleteCollection方法(不推荐):
用于递归删除的 Android 代码:
以下 Android 代码演示如何递归删除集合:
<code class="java">private void deleteCollection(final CollectionReference collection, Executor executor) { Tasks.call(executor, () -> { int batchSize = 10; Query query = collection.orderBy(FieldPath.documentId()).limit(batchSize); List<DocumentSnapshot> deleted = deleteQueryBatch(query); while (deleted.size() >= batchSize) { DocumentSnapshot last = deleted.get(deleted.size() - 1); query = collection.orderBy(FieldPath.documentId()).startAfter(last.getId()).limit(batchSize); deleted = deleteQueryBatch(query); } return null; }); } @WorkerThread private List<DocumentSnapshot> deleteQueryBatch(final Query query) throws Exception { QuerySnapshot querySnapshot = Tasks.await(query.get()); WriteBatch batch = query.getFirestore().batch(); for (DocumentSnapshot snapshot : querySnapshot) { batch.delete(snapshot.getReference()); } Tasks.await(batch.commit()); return querySnapshot.getDocuments(); }</code>
以上是如何有效删除Firestore集合和子集合?的详细内容。更多信息请关注PHP中文网其他相关文章!