Android 复合查询未给出正确的结果[Firestore]

Android 复合查询未给出正确的结果[Firestore],android,google-cloud-firestore,string-comparison,Android,Google Cloud Firestore,String Comparison,这是我的表(所有值都是字符串类型,'subjects'是数组): 我正在努力: FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); Query q = rootRef.collection("users"); q = q.whereArrayContains("subjects", "Science"). whereEqualTo("qualification","0").

这是我的表(所有值都是字符串类型,'subjects'是数组):

我正在努力:

  FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
  Query q = rootRef.collection("users");


  q = q.whereArrayContains("subjects", "Science").
           whereEqualTo("qualification","0").
               whereEqualTo("gender", "Male").
                  whereLessThanOrEqualTo("fee", "300");

  q.get().addOnCompleteListener(task -> {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : Objects.requireNonNull(task.getResult())) {

                        Log.d("LogHeree ", "here " + document.get("name"));

                }
            }
        });
它不返回任何内容

我试过:

 q = q.whereArrayContains("subjects", "Science").
               whereEqualTo("qualification","0").
                   whereEqualTo("gender", "Male");
这个(上面的查询)给出了正确的结果

此外:

这个(上面的查询)也给出了正确的结果。 显然,当单独运行时,查询工作正常。 那么,我在这里做错了什么,或者为什么组合起来不起作用

注意:不是重复的:因为我在单个域上使用不等式。
我得到了这个错误:“查询需要一个索引…”

我想你写错了集合名称:

更改此项:

Query q = rootRef.collection("users");
为此:

Query q = rootRef.collection("Users");

您的代码没有响应查询中可能发生的错误(ISTASKSUCCESS可能返回false)。如果您检查文档中所示的错误,您会发现什么?还要记住,您将多个数字存储为字符串,这很可能会导致范围查询和比较出现问题,因为字符串不像数字那样排序。除非您完全知道自己在做什么,否则您永远不应该将数字存储为字符串。感谢您的审阅,我尝试将数据类型更改为数字,但结果仍然相同。我将尝试获取错误并添加。那么错误到底是什么?请对问题进行编辑,使其具体、完整,以了解您所观察到的情况。您到底遇到了哪些错误?也许您的表中没有满足所有条件的字段。我可以使用相同的集合(即“用户”)在简单查询中获取数据。
Query q = rootRef.collection("Users");