如何使用where子句删除firestore数据库中集合中的文档



我使用下面的代码引用了一个特定的文档,我需要使用集合中的"where"子句删除该文档,但我无法找出执行该操作的函数,我在android java和firestore数据库中使用了这个

private void deleteDocument() {
final CollectionReference docref = (CollectionReference) db.collection("users").document(CommentAuthorId).collection("notifications_received").whereEqualTo( "comment_id", Comment_Id );
docref.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
}

Firestore不提供像SQL那样的"delete where"函数,该函数根据某些过滤器删除文档。

相反,您要做的是查询所有文档并迭代它们(就像现在一样(,然后使用getReference((提供的快照中的引用单独删除每个文档:

for (QueryDocumentSnapshot document : task.getResult()) {
document.getReference().delete();
}

试试这个,它对我有效:

holder.imgCross.setOnClickListener(v -> {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
alertDialog.setTitle("Do you want to Delete News  in your list");
alertDialog.setPositiveButton("CANCEL", (dialog, which) -> dialog.cancel());
alertDialog.setNegativeButton("YES", (dialog, which) -> {
FirebaseFirestore.getInstance().collection("NewsAndNotification").document(newsandNotiModel.getId())
.delete().addOnSuccessListener(aVoid -> {
notifyDataSetChanged();
});
/*  Toast.makeText(context, "Added in SOS list", Toast.LENGTH_SHORT).show();*/
});
AlertDialog dialog = alertDialog.create();
dialog.show();
});

您应该能够对文档引用本身调用delete方法。

最新更新