这是我的火力棒的屏幕截图: 我试图在firebase数据库中检索最高的100分 我正在使用此代码向firebase添加新节点:
Map<String, String> post1 = new HashMap<String, String>();
post1.put("name",name);
post1.put("score",score);
myRef.push().setValue(post1);
这是我用来检索最高100分不起作用的代码(代码可以工作,但它没有检索到最高的100分)
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) {
}
});
答案 0 :(得分:8)
Firebase查询始终按升序排列。因此,您需要获得最后 100,而不是前100个。
Query queryRef = myRef.orderByChild("score").limitToLast(100);
然后客户端你需要撤销这些项目。
或者,您可以为商品invertedScore: -99
添加倒置属性。如果你这样做,你可以通过倒排的分数订购,并且不必反转阵列。
以前经常涉及此方案。我强烈建议你研究其中的一些:
答案 1 :(得分:0)
这是一种从 firebas 获取最高薪水的方法
或从 firebase 获取最高数字
one citiesRef.orderBy("name").limit(3);
two citiesRef.orderBy("name", "desc").limit(3);
three citiesRef.where("population", ">", 100000).orderBy("population").limit(2);
four citiesRef.where("population", ">", 100000).orderBy("population");