现在我想只选择具有特定性别和品质的名字。我写了这样的代码
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的所有单词。
答案 0 :(得分:1)
您无法对Firebase实时数据库执行此操作,而无需对架构进行重大更改。实时数据库没有能力在多个条件下执行过滤(有些人说"多个where子句"在SQL术语中)。如果要检查多项内容的匹配项,则必须创建一个复合字段,其中包含您要查找的内容的组合。例如,您需要一个字符串值,该字符串值具有性别且所有质量以可预测的方式连接在一起,然后让客户端搜索该字符串。
Firestore允许您在多个条件下进行过滤,但您仍然无法搜索多组对象。你仍然需要一个将所有特质连接起来的特殊领域。