使用字符串选择对象包含Firebase DB中的一些子字符串

时间:2018-05-14 19:40:27

标签: java firebase firebase-realtime-database

我有结构enter image description here

的firebase数据库

现在我想只选择具有特定性别和品质的名字。我写了这样的代码

private NameImpl.Gender mGender;
private String[] mQualities;

...

public void GetNames()
{
    mRef.orderByChild("Gender").equalTo(mGender.name()).addValueEventListener(new ValueEventListener()
     {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            getData(dataSnapshot);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
     });
}

但我无法理解如何在此添加要求数据库中的Qualities字符串必须包含来自mQualities的所有单词。

1 个答案:

答案 0 :(得分:1)

您无法对Firebase实时数据库执行此操作,而无需对架构进行重大更改。实时数据库没有能力在多个条件下执行过滤(有些人说"多个where子句"在SQL术语中)。如果要检查多项内容的匹配项,则必须创建一个复合字段,其中包含您要查找的内容的组合。例如,您需要一个字符串值,该字符串值具有性别且所有质量以可预测的方式连接在一起,然后让客户端搜索该字符串。

Firestore允许您在多个条件下进行过滤,但您仍然无法搜索多组对象。你仍然需要一个将所有特质连接起来的特殊领域。