[英]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.