首页 > 解决方案 > 在 Android Studio 中使用复杂查询从 Firebase 数据库获取节点

问题描述

我有一个 Firebase 实时数据库,具有此示例结构 基本节点结构

我需要创建过滤器,因此我可以获取所有节点,即成本在 100 美元到 400 美元之间,距离我当前位置不超过 60 英里,并且其 startDate 不在今天之前的节点。或者这些过滤器的任何类型的组合(成本从、成本到、距离、开始日期从、开始日期到)。

是否有任何有效的方法来存储这些数据,以便所有过滤都可以在服务器端进行?

我知道我可以制作一个.orderByChild( "cost" ).startAt(100).endAt(400),然后datasnapshot在客户端迭代,但我认为当数据库增长时它并不优雅或高效。

想象一下,引入数百万个节点只是为了显示满足所有过滤器的 3 或 4 个节点。

我一直在做很多研究(相信我),但我仍然很难抓住它的味道。我是在 SQL shell 中长大的,那些查询曾经是我的 ABC,我只是无法忍受事情变得如此丑陋的想法,但一定是我。

任何对这些 NO-SQL 数据库有更多经验的人都可以在这里帮我一把吗?它必须是 Firebase 实时数据库,而不是 Cloud Firestore。

标签: javaandroidfirebasefirebase-realtime-database

解决方案


我认为在实时数据库中,您无法通过简单的查询在服务器端执行此操作。我知道使用 dataSnapshot 您将获取所有数据并选择您想要的,但正如您所说,如果数百万个节点......它变得非常困难。我认为您应该将 SQL 用于此类应用程序。这是我的意见,我正在等待这篇文章的其他答案:D

对不起答案,但我不能评论;(


推荐阅读