我的firebase数据库结构如下:
-users
-[userID from the account]
-[interval key generated automatically with push]
-start: timestamp
-end: timestamp
-color: black
-[interval key]
-start: timestamp
-end: timestamp
-color: red
-[interval key]
-start: timestamp
-end: timestamp
-color: green
-[userID2 from the account]
-[interval key]
-start: timestamp
-end: timestamp
-color: black
-[interval key]
-start: timestamp
-end: timestamp
-color: white
-[interval key]
-start: timestamp
-end: timestamp
-color: red
使用android我不明白如何进行一些组合查询。
如果我有:
long start = 1494637200000;
long end = 1494640800000;
和
DatabaseReference userRef = dbRef.child("users").child(uid);
如果我不能使用orderByChild()超过1次:
1)如何从数据库中获取与start
和end
重叠的所有间隔?
Sql:
select *
from [userID]
where start + " < " + 1494640800000 + " AND " + end + " > " + 1494637200000
2)如何从数据库中获取与start
和end
重叠的所有间隔,但只能使用颜色“black
”?
Sql:
select *
from [userID]
where start + " < " + 1494640800000 + " AND " + end + " > " + 1494637200000 AND color = "black"
(我接受不同语言的答案,只是让它变得可以理解)
答案 0 :(得分:1)
在开始创建这些查询之前,我建议你看一下名为The Firebase Database For SQL Developers的教程。您将了解实现您想要的确切方法的确切方法。
要转换如下所述的值,请使用以下代码:
String firebaseField = "1494637200000_1494640800000_black";
ArrayList<String> arrayList = new ArrayList<>();
String[] data = firebaseField.split("_");
for(String part : data) {
arrayList.add(part);
}
long start = Long.valueOf(arrayList.get(0));
long end = Long.valueOf(arrayList.get(1));
String color = arrayList.get(2);
if(yourStartValue < start && yourEndValue > end && color.equals("black")) {
//Your logic here
}
希望它有所帮助。