Java 类似sql的WHERE子句的Firebase查询

Java 类似sql的WHERE子句的Firebase查询,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在安卓系统中与Firebase一起工作。在我的应用程序中,有一个场景,我需要根据子节点中的字段从根节点获取过滤列表。有关此问题的更多信息,请参见下面的示例数据库结构 例如,我需要从根Chats获取数据,其中部分包含3作为值。我试过了,但没用。有没有办法获得如上所述的筛选列表 Query query = databaseReference.orderByChild("databaseData").equalTo("yourdatayouwant"); 你可以这样做 您可以这样做您无法使用

我正在安卓系统中与Firebase一起工作。在我的应用程序中,有一个场景,我需要根据子节点中的字段从根节点获取过滤列表。有关此问题的更多信息,请参见下面的示例数据库结构

例如,我需要从根
Chats
获取数据,其中部分包含3作为值。我试过了,但没用。有没有办法获得如上所述的筛选列表

 Query query = databaseReference.orderByChild("databaseData").equalTo("yourdatayouwant");
你可以这样做


您可以这样做

您无法使用实际的数据库结构查询问题中提到的数据库。在这种情况下,有一个名为非规范化的实践,为此,我建议您观看此视频

在您的情况下,您需要从chat node中取出
部分
节点,并创建一个新的顶级节点,您可以在其中存储这些值。我建议您也将其用作子项的名称,即您要查询的确切名称。在这种情况下,您将能够在该特定节点上附加侦听器,并使用
exists()
方法检查子节点是否存在

另外,为了更好地理解,请阅读本文


我还想分享另外两个资源。

您不能使用实际的数据库结构查询问题中提到的数据库。在这种情况下,有一个名为非规范化的实践,为此,我建议您观看此视频

在您的情况下,您需要从chat node中取出
部分
节点,并创建一个新的顶级节点,您可以在其中存储这些值。我建议您也将其用作子项的名称,即您要查询的确切名称。在这种情况下,您将能够在该特定节点上附加侦听器,并使用
exists()
方法检查子节点是否存在

另外,为了更好地理解,请阅读本文


我还想分享另外两个资源。

如果part包含3个孩子,或者part的一个孩子有
3
作为一个值?如果您更改数据库的结构,可能会更好。您应该使用firebase的结构进行实时数据库聊天,以创建一个易于查询的工作聊天室。无论如何,我建议切换到firebase firestore,它确实有一个更好的查询系统,可以满足您的要求。其中部分包含3作为值。如果您更改结构,就更好了,好像您只有子项(“聊天”),那么这将是一个复杂的查询,甚至无法工作。但是,如果您有其他可用的子项,那么它可以在部件包含3个子项或部件的一个子项具有
3
作为值的情况下工作?如果您更改数据库的结构,可能会更好。您应该使用firebase的结构进行实时数据库聊天,以创建一个易于查询的工作聊天室。无论如何,我建议切换到firebase firestore,它确实有一个更好的查询系统,可以满足您的要求。其中部分包含3作为值。如果您更改结构,就更好了,好像您只有子项(“聊天”),那么这将是一个复杂的查询,甚至无法工作。但是,如果您有其他可用的孩子,那么它可以工作,我猜不
equalTo
可以使用单值类型。但正如我在问题中提到的,部分是一个数组,因此不能对数组执行
equalTo
。我想
equalTo
不能使用单值类型。但正如我在问题中提到的,parts是一个数组,因此不能对数组执行
equalTo