Android OrderByChild向结果中再添加一个元素

Android OrderByChild向结果中再添加一个元素,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我试图只获取某个用户拥有的事件,问题是在执行orderByChild()之后,它会过滤一个我不想要的事件 代码 现在,这是我的数据库结构 问题 现在,当我运行此代码并执行日志以获取用户的事件时,2UHZWR6B8P9XJPULYRAG6AEGN63,我又获得了一个不属于该用户的事件,该事件就是这个-LU930PpCaQXT8CvUbc8 我的日志 事件:用户的-LU930PpCaQXT8CvUbc82uhzwr6b8p9xjpulyrag6aegn63 事件:-LTRz61EcBUx RLSS

我试图只获取某个用户拥有的事件,问题是在执行
orderByChild()
之后,它会过滤一个我不想要的事件

代码 现在,这是我的数据库结构

问题 现在,当我运行此代码并执行日志以获取用户的事件时,
2UHZWR6B8P9XJPULYRAG6AEGN63
,我又获得了一个不属于该用户的事件,该事件就是这个
-LU930PpCaQXT8CvUbc8

我的日志 事件:用户的-LU930PpCaQXT8CvUbc82uhzwr6b8p9xjpulyrag6aegn63

事件:-LTRz61EcBUx RLSSEaU用户的事件2uhzwr6b8p9xjpulyrag6aegn63

事件:-LTSGFGdW1nQbtd9HOBh用户的事件2uhzwr6b8p9xjpulyrag6aegn63

事件:-LTSIG_lqckgHEZ1q9YS用户的事件2uhzwr6b8p9xjpulyrag6aegn63

如您所见,正在列出该用户的所有事件,但该用户只有3个与之关联的事件

当我用这一行订货时

.orderByChild(snapshotJugadoresTutor.getKey())

我希望只获取用户ID为
2uhzwr6b8p9xjpulyrag6aegn63
的节点,然后循环并从该用户获取每个事件ID,但相反,我也从该用户获取事件ID
GVD0bLDf41VDdraN67mXjAS6KPk1

您不能仅使用基于JSON的数据库(如Firebase)进行筛选。 orderByChild只更改返回值的排序。因此,您基本上是对该键下的所有值进行排序,没有进行过滤。 在这一点上,你有3个选择继续

选项1-效率不高,建议仅用于小型应用程序: 您可以对所有值进行排序,然后进行筛选

选项2-推荐: 您可以更改数据结构。创建另一个节点,如“UserEvents”。在它下面存储UID。在这个UID下应该只有那个用户的事件

选项3-推荐和功能:
您可以使用Elasticsearch。它非常适合复杂的查询。切换到“随用随付”计划后,您可以将其与Firebase和Google云功能一起使用,也可以使用手电筒扩展将另一台服务器与Firebase数据库集成。

谢谢您的帮助,是的,我已经有了UserEvents节点,这就是为什么我需要从每个用户那里获取这个特定的ID,然后转到该表以获取值:),我将继续尝试其他方法,谢谢,如果没有人回答,我会等待,我会将其标记为correct@Gast据我所知,orderByChild只会更改查询的排序,而不会更改返回的结果。你能验证一下吗?这是绝对正确的,我忽略了这一点,这就是为什么我得到的是4个值而不是3个值,我试图添加一点if条件来过滤结果,当用户id与搜索的id相同时Hanks mustafa获得提示,现在我查询events节点,获取所有指向辅助节点的密钥,并检查用户是否与我请求的相同刚刚修复了上述问题:)
.orderByChild(snapshotJugadoresTutor.getKey())