【发布时间】:2021-02-03 22:54:22
【问题描述】:
{
"Events" : {
"16" : {
"eventDate" : "2021-02-02",
"eventId" : "16",
"eventName" : "First Test",
"eventTime" : "09:39:00"
},
"22" : {
"eventDate" : "2021-02-02",
"eventId" : "22",
"eventName" : "Test22 Exam",
"eventTime" : "09:39:00"
},
"26" : {
"eventDate" : "2021-02-02",
"eventId" : "26",
"eventName" : "Webinar",
"eventTime" : "09:39:00"
}
}
}
如果我像这样存储我的Events,并且我想获得EventId 等于16 和26 的节点。
我该怎么做?
上面是issue的孩子,是root的孩子。
我尝试了 equalTo 但只得到一条记录。 我需要同时获得 16 和 26。
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference.child("Events").orderByChild("eventId").equalTo("16");
【问题讨论】:
-
请检查副本以了解如何实现此目的。您也可以尝试使用Cloud Firestore。
-
@AlexMamo:我实际上不认为这是您标记的问题的重复,因为这里 OP 正在尝试对多个值进行 OR,而不是跨多个属性进行 AND。不过,对于此类查询,使用 Firestore 是一个有效的选择。
-
@FrankvanPuffelen 即使 OP 写了“16 和 26”,是的,它是 OR 而不是 AND。顺便说一句,很高兴看到在 Firebase 实时数据库 SDK 12 月的更新中添加了 DatabaseReference#get() 和 Query#get()。谢谢。
-
是的,
get()比预期更早地进入了 Android SDK,所以我们仍在跟进文档和博客文章。 RTDB SDK 的更多小改进即将推出。 -
@FrankvanPuffelen 等不及要看他们了 :)
标签: android firebase firebase-realtime-database