Firebase-过滤和排序。努布问题

Firebase-过滤和排序。努布问题,firebase,Firebase,我正在尝试在Firebase中筛选数据,我的结构如下所示: -Lp95KXXJKhKuaA_dbe_:{ rating: 5, date: 12414, other properties}, -Lp95RQvvbPxGxkuAyYH:{ date: 12415, rating: 2, other properties}, -Lp95s1u4cQ9oHQaFGs:{ rating: 3, date: 12416,

我正在尝试在Firebase中筛选数据,我的结构如下所示:

-Lp95KXXJKhKuaA_dbe_:{
     rating: 5,
     date: 12414,
     other properties},
-Lp95RQvvbPxGxkuAyYH:{
     date: 12415,
     rating: 2,
     other properties},
-Lp95s1u4cQ9oHQaFGs:{
     rating: 3,
     date: 12416,
     other properties},
...
我想获取评级为3级或3级以上的数据,限制为500条数据。但是,每个元素都被推送到数据库中,因此数据是按日期顺序排列的,我想保留这个顺序。翻阅文档,如果我想使用
.startAt()
,我必须按子级“评级”排序数据。这意味着,我将不会得到评级为3或以上的最后500个元素(这是我所需要的)

有人知道我如何得到最后500个元素的评级为3或更多吗


提前感谢-非常感谢您的帮助。

您可以使用
limitToLast(500)
获取数据库中的最后500个元素

从文档中:

设置从有序结果列表末尾返回的最大项数


嗨,我认为这不会解决我的问题,因为它会从排序结果列表中返回它们,也就是说,它不会是最后的500个,而是评级最高的500个。或者我误解了吗?如果您这样做
orderByChild(“评级”).startAt(3).limitToLast(500)
这应该会给您一个根据评级值排序的列表,但排序的列表将从数字3及以上开始,返回的列表将从排序结果列表的末尾最多500个。是,但这与获得最后500份评级为3或更高的参赛作品不同。我需要返回的列表是无序结果列表末尾的最大值。除非我弄错了,例如:orderByChild(“评级”)。EndtAt(4)。limitToLast(1)将返回-lp95rqvvbpxgxkuayh,但我正在寻找-Lp95s1u4cQ9oHQaFGs。实际上,在你的例子中,你应该得到
Lp95s1u4cQ9oHQaFGs
我以为你已经尝试过了,所以对结果感到震惊,也许尝试一下,看看你得到了什么。我能想到的唯一方法是在评级上按Child排序,然后在客户端按日期重新排序,并在500后削减所有内容,但这似乎效率低下,尤其是对于大型数据集。