Java 如何通过嵌套数据删除firebase中的父级?
这些数据进入数据库Java 如何通过嵌套数据删除firebase中的父级?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,这些数据进入数据库 { "Markers" : { "brTRf3EfqzaWuaw0q42Ay8Jnj0F3" : { "-M5Tp8BZpUkJSbmV4Qya" : { "date" : "22, апр., 2020", "latitude" : "53.9150522051367", "longitude" : "27.440601512789726", "permission" : false,
{
"Markers" : {
"brTRf3EfqzaWuaw0q42Ay8Jnj0F3" : {
"-M5Tp8BZpUkJSbmV4Qya" : {
"date" : "22, апр., 2020",
"latitude" : "53.9150522051367",
"longitude" : "27.440601512789726",
"permission" : false,
"time" : "01:21"
},
"-M5XhMon2UZiD6M_Zbp5" : {
"date" : "22, апр., 2020",
"latitude" : "53.914562076017575",
"longitude" : "27.441855780780315",
"permission" : false,
"time" : "19:25"
}
}
}
}
以用户的第一个条目为例:brTRf3EfqzaWuaw0q42Ay8Jnj0F3
他和他的父母在地图上做了一个标记:
“-M5Tp8BZpUkJSbmV4Qya”
它包含一个带有时间数据的记录:
“时间”:“01:21”
实际上,问题是:
如何删除父记录
“-M5Tp8BZpUkJSbmV4Qya”通过在其中记录时间???要根据查询删除父级,请执行以下操作:
DatabaseReference markerRef = FirebaseDatabase.getInstance().getReference().child("Markers");
markerRef.child("brTRf3EfqzaWuaw0q42Ay8Jnj0F3").orderByChild("time").equalTo("01:21").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()){
data.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
首先添加对节点的引用brTRf3EfqzaWuaw0q42Ay8Jnj0F3
,然后使用orderByChild(“time”).equalTo(“01:21”)
可以创建一个查询来检索包含上述时间的节点。然后在快照
中迭代,并使用getRef()
可以获取对该快照的源位置的引用