繁体   English   中英

Firebase中按特定字段排序后如何删除文档?

[英]How can I delete a document in Firebase after sorting by a specific field?

我目前正在使用 Android Studio(使用 Java)并且在删除文档时遇到了一些问题。 假设我正在使用带有特定“字段”的“文档”的“集合”。 如果字段是“apple”,我需要删除文档,但我不知道实际的文档名称。

目前我正在使用的代码(通过查看其他答案)是:

db
.collection("Collection")
.whereEqualTo("field", "apple")
.addSnapshotListener(new EventListener<QuerySnapshot>() {
    @Override
    public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
        value.delete();
    }
});

我想知道如何根据只知道该字段是否为“苹果”来删除整个“文档”。 谢谢!

您可以从查询快照中获取文档列表,然后遍历列表并删除文档。 使用给定的例子:

db.collection("Collection")
                .whereEqualTo("field", "apple")
                .addSnapshotListener(new EventListener<QuerySnapshot>() {
                    @Override
                    public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
                        if (value != null && !value.getDocuments().isEmpty()) {
                            List<DocumentSnapshot> documents = value.getDocuments();
                            for (DocumentSnapshot document : documents) {
                                DocumentReference documentReference = document.getReference();
                                documentReference.delete();
                            }
                        }
                    }
                });

当不需要实时更新时,您可以使用:

db.collection("Collection")
                .whereEqualTo("field", "apple")
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        List<DocumentSnapshot> documents = task.getResult().getDocuments();
                        for (DocumentSnapshot document : documents) {
                            DocumentReference documentReference = document.getReference();
                            documentReference.delete();
                        }
                    }
                });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM