java - 从 Firebase 数据库中查找最后 50 个节点的最大值

标签 java android firebase firebase-realtime-database

我只想从最后 50 个节点中找到最大值。我曾经使用 orderByChild 和 limitToLast 方法,但它从所有节点找到最大值,而不仅仅是从最后 50 个节点。 这是我的数据库: enter image description here

我的代码:

    database = FirebaseDatabase.getInstance();
            reference = database.getReference("sensor");

 Query query = reference.orderByChild("hum").limitToLast(50);
        query.addValueEventListener(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for(DataSnapshot myDataSnapshot : dataSnapshot.getChildren())
                {
                humTemp = myDataSnapshot.child("hum").getValue().toString();
                humMax.setText(humTemp);
                }
            }
            public void onCancelled(DatabaseError firebaseError) {

            }

        });

所以,正如你所看到的,我尝试从最后 50 个节点中找到 hum 变量的最大值。 附:数据库中不断出现新节点,因此最大值应每 50 个值实时更改

最佳答案

如果您想要最多 50 个最新节点,您可以尝试按两个属性进行排序:

  • 湿度
  • 节点(或其键)的时间

Firebase 数据库查询只能对单个属性进行排序/过滤。

在许多情况下,可以将要过滤的值组合到单个(合成)属性中。有关此方法和其他方法的示例,请参阅我的答案:http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase 。但我认为这对你来说是不可能的。

我能想到的最好的方法是只监听最后 50 个节点,然后根据客户端的湿度对它们重新排序。

关于java - 从 Firebase 数据库中查找最后 50 个节点的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56552890/

相关文章:

android - Android 屏幕方向改变时屏幕闪烁?

javascript - 请通过使用 Firebase 使用 Google 更新我的 gradle 来修复版本冲突

java - firebase检索值不正确

java - MVC 与观察者模式

java - SpEL 不解析简单的 ${spring.profiles.active} 表达式

java - 在 Eclipse 中安装远程 Tomcat 服务器

java - Android 应用程序教程 content.xml 和 activity.xml 文件与教程有不同的代码

android - 如何删除 webview 中的地址栏

android - 为什么 ContentProvider.onCreate() 在 Application.onCreate() 之前被调用?

swift - 如何同时按日期范围和其他一些参数获取 firebase 数据