我搜索了多个具有不同ID的文档,我需要实现某种方法来删除所有文档,因此我搜索了一下,所以我想应该使用批处理的方法。 所以我的数据库就是这个Image
所以我能够在这样的数组列表中获取我的文档ID。
[0Y5rfMK3duHBUTN9XsO5、2Q70mSjNxkAoUMDAJ8rz等...]
和我的代码:
WriteBatch batch = db.batch();
DocumentReference myRef = db.collection("Collection").document(String.valueOf(idsList));
batch.delete(myRef);
batch.commit();
但这是行不通的,所以如果遗漏了一点步骤,或者如果有其他方法可以执行,那么将其写下来将非常感激。
答案 0 :(得分:0)
Ref:https://firebase.google.com/docs/firestore/manage-data/delete-data
for (String DocId : yourListObject) {
db.collection("Collection").document(String.valueOf(docID))
.delete()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully deleted!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error deleting document", e);
}
});
}
删除收藏集
要在Cloud Firestore中删除整个集合或子集合,请检索集合或子集合中的所有文档并将其删除。如果您有较大的馆藏,则可能要分批删除文档,以避免内存不足的错误。重复该过程,直到您删除了整个集合或子集合。
删除集合需要协调无数个单独的删除请求。如果需要删除整个集合,请仅从受信任的服务器环境中删除。虽然可以从移动/ Web客户端删除集合,但是这样做会对安全性和性能造成负面影响。
/** Delete a collection in batches to avoid out-of-memory errors.
* Batch size may be tuned based on document size (atmost 1MB) and application requirements.
*/
void deleteCollection(CollectionReference collection, int batchSize) {
try {
// retrieve a small batch of documents to avoid out-of-memory errors
ApiFuture<QuerySnapshot> future = collection.limit(batchSize).get();
int deleted = 0;
// future.get() blocks on document retrieval
List<QueryDocumentSnapshot> documents = future.get().getDocuments();
for (QueryDocumentSnapshot document : documents) {
document.getReference().delete();
++deleted;
}
if (deleted >= batchSize) {
// retrieve and delete another batch
deleteCollection(collection, batchSize);
}
} catch (Exception e) {
System.err.println("Error deleting collection : " + e.getMessage());
}
}
有关更多信息,请访问https://firebase.google.com/docs/firestore/manage-data/delete-data
答案 1 :(得分:0)
您将必须遍历列表,并分别为每个列表创建一个DocumentReference。 DocumentReference只能引用单个文档,而不能引用文档列表:
WriteBatch batch = db.batch();
for (String id : idsList) {
DocumentReference ref = db.collection("Collection").document(id);
batch.delete(ref);
}
batch.commit();