The JSON data shows available disciplines in various colleges:
{
"AvailableDisciplines": {
"4JN": {
"Disciplines": {
"CV": {
"disciplineCode": "CV",
"disciplineName": "Civil Engineering",
"siNo": "1"
},
"EC": {
"disciplineCode": "EC",
"disciplineName": "Electronics and Communication Engineering",
"siNo": "2"
},
"EE": {
"disciplineCode": "EE",
"disciplineName": "Electronics and Electricals Engineering",
"siNo": "3"
}
}
},
"4MT": {
"Disciplines": {
"EE": {
"disciplineCode": "EE",
"disciplineName": "Electronics and Electricals Engineering",
"siNo": "1"
},
"CS": {
"disciplineCode": "CS",
"disciplineName": "Computer Science Engineering",
"siNo": "2"
},
"IS": {
"disciplineCode": "IS",
"disciplineName": "Information Science Engineering",
"siNo": "3"
}
}
},
"1KT": {
"Disciplines": {
"TE": {
"disciplineCode": "TE",
"disciplineName": "Telecommunication Engineering",
"siNo": "1"
},
"CS": {
"disciplineCode": "CS",
"disciplineName": "Computer Science Engineering",
"siNo": "2"
},
"IS": {
"disciplineCode": "IS",
"disciplineName": "Information Science Engineering",
"siNo": "3"
}
}
}
}
}
where 4JN, 4MT and 1KT are College Code. If I want to query all the colleges that offers Civil Engineering discipline, I'll have to write a deep query on AvailableDisciplines node. And the query code is:
FirebaseDatabase.getInstance().getReference()
.child("Trial").child("AvailableDisciplines")
.orderByChild("Disciplines/EE").startAt("")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.v("log", "datasnapshot: " + String.valueOf(dataSnapshot));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
}));
I'm able to fetch the data as per my expectation. But, I'm not getting how to write .indexOn
rules for this case. Could you help me please?