This is a screen shot of my firebase: I am trying to retrieve the highest 100 score in firebase database I am using this code to add new node to firebase:
Map<String, String> post1 = new HashMap<String, String>();
post1.put("name",name);
post1.put("score",score);
myRef.push().setValue(post1);
And this is the code I am using to retrieve the highest 100 score which doesn't work (the code works but it is not retrieving the highest 100 score)
Query queryRef = myRef.orderByChild("score").limitToFirst(100);
queryRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
Score score=postSnapshot.getValue(Score.class);
Log.d("test"," values is " + score.getName() + " " + score.getScore());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Firebase queries are always in ascending order. So you'll need to get the last 100, instead of the first 100.
Query queryRef = myRef.orderByChild("score").limitToLast(100);
Then client-side you'll need to reverse the items.
Alternatively you can add a inverted property to your items invertedScore: -99
. If you do that, you can order by that inverted score and won't have to reverse the array.
This scenario has been covered frequently before. I highly recommend you study some of these:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With