具有两次 orderByChild 条件的 Firebase 查询 [重复]

Posted

技术标签:

【中文标题】具有两次 orderByChild 条件的 Firebase 查询 [重复]【英文标题】:Firebase query with twice orderByChild condition [duplicate] 【发布时间】:2018-09-22 05:55:59 【问题描述】:

我有一个问题:

我想使用两次 orderByChild() 条件创建一个 firebase 查询

第一个条件:比较一个字段

第二个条件:按特定字段对元素进行排序。

这是我将要执行的查询示例:

ref.orderByChild("id").equalTo("1").orderByChild("name").addValueEventListener(new ValueEventListener() 
@Override
public void onDataChange(DataSnapshot dataSnapshot) 
    for (DataSnapshot d : dataSnapshot.getChildren()) 
        Model m = d.getValue(Model.class);
    


@Override
public void onCancelled(FirebaseError firebaseError) 

    
);

如果我尝试使用此查询,应用程序会崩溃。可以在 Firebase 中创建这种类型的查询吗?

提前致谢。

【问题讨论】:

Firebase 数据库查询只能对单个属性进行排序/过滤。在许多情况下,可以将要过滤的值组合成单个(合成)属性。有关此方法和其他方法的示例,请在此处查看我的答案:***.com/questions/26700924/… 【参考方案1】:

不,因为不能使用两个orderByChild(),所以无法创建这种查询,以下是可能的:

orderByChild("name").equalTo(name);
orderByKey().equalTo("key_here");
orderByChild("name").limitToFirst(10)

更多信息在这里:

https://firebase.google.com/docs/reference/android/com/google/firebase/database/Query.html

【讨论】:

该死的。不存在任何解决此问题的方法? 不,没有解决方法,您需要更改数据库结构以使其按您的意愿工作,或者使用 firestore 代替 firebase 进行此类查询 谢谢大哥!!!!【参考方案2】:

firebase 不支持多个 orderbychild() 查询。

查看这些链接以构建您的数据库。

Android firebase apply multiple queries

Firebase how to set orderByChild more than one

Android Firebase multiple sort

Query based on multiple where clauses in Firebase

【讨论】:

以上是关于具有两次 orderByChild 条件的 Firebase 查询 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Spring Mongo 条件查询两次相同的字段

orderByChild() 如果值相同,如何按第二个变量排序?

什么是FIR系统,IIR系统?有什么区别?

FIR数字滤波器设计(中)

使用MATLAB设计FIR滤波器

我怎样才能限制到最后的orderByChild?