Android 我可以基于两个属性检索查询吗?

Android 我可以基于两个属性检索查询吗?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想从Firebase检索数据。检索数据应该是可见的,并且具有适当的属性“vis”和标志“true”。这是一项相当简单的任务。但我还需要具体的顺序,所以在开始时应该使用属性“pos”等于1的子对象,而不是2,等等 这是我当前的代码行 mQuery = mDatabaseReference.orderByChild("vis").equalTo("true"); 数据结构如下所示: common code:"common" name:"Common" pos:"5" vis:"false

我想从Firebase检索数据。检索数据应该是可见的,并且具有适当的属性“vis”和标志“true”。这是一项相当简单的任务。但我还需要具体的顺序,所以在开始时应该使用属性“pos”等于1的子对象,而不是2,等等

这是我当前的代码行

mQuery = mDatabaseReference.orderByChild("vis").equalTo("true");
数据结构如下所示:

common
 code:"common"
 name:"Common"
 pos:"5"
 vis:"false"

 court
 code: "court"
 name: "Court reform"
 pos: "2"
 vis: "false"

 june12
 code: "june12"
 name: "12 June"
 pos: "1"
 vis: "true"

简而言之,答案是否定的。从文件中可以看出:

一次只能使用一种方法。在同一查询中多次调用order by方法会引发错误。

您可以使用筛选函数限制数据范围:


一定要看这个系列。特别是(#6)上的视频和后续多路径更新(#7)。可以使用服务器端执行多路径更新。

您可以将要使用的两个值组合到一个属性中,即
vis\u pos:“true\u 1”
。然后,您可以对该属性进行排序/筛选,并获得所需的结果。请看我的回答:谢谢你,弗兰克!我以前见过这个问题。我有不同的任务。我想检索属性“vis”的值为“true”的数据,并且在同一类型中,该检索数据应按升序显示。这就是为什么我使用另一个属性“pos”。我找到了一个简单的解决方案:我删除了属性“vis”,并更改了我应用程序中的代码行。mQuery=mDatabaseReference.orderByChild(“pos”).startAt(“100”);所以在那之后,我只检索从“100”开始的数据。