Firebase 使用多个where子句查询firestore

Firebase 使用多个where子句查询firestore,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我正在使用firestore开发一个颤振应用程序,但现在为了搜索,我有一个查询。查询将如下所示 SELECT * FROM User WHERE age IS BETWEEN 16 TO 40 AND gender IS male AND isSearching IS true CollectionReference collection=FirebaseFirestore.instance.collection("Posts").doc(myMood).c

我正在使用firestore开发一个颤振应用程序,但现在为了搜索,我有一个查询。查询将如下所示

SELECT * 
FROM User 
WHERE age IS BETWEEN 16 TO 40 
  AND gender IS male 
  AND isSearching IS true
CollectionReference collection=FirebaseFirestore.instance.collection("Posts").doc(myMood).collection("Comments");

    Query  _searching=collection.where('isSearching',isEqualTo: true);
    Query _gender=_searching.where('gender',isEqualTo: preferredGender);
    Query _ageless=_gender.where('age',isEqualTo: values.start.round());
   Query _agemore=_ageless.where('age',isLessThanOrEqualTo: values.end.round() );

_agemore.get().then((querySnapshots) {
  print(_ageless.toString());
      if(querySnapshots.docs.length == 0)
      {
        print('data is empty');
      }
      else
      {
          print('data found');
      }

  });
我已经在flatter中为这个查询编写了如下代码

SELECT * 
FROM User 
WHERE age IS BETWEEN 16 TO 40 
  AND gender IS male 
  AND isSearching IS true
CollectionReference collection=FirebaseFirestore.instance.collection("Posts").doc(myMood).collection("Comments");

    Query  _searching=collection.where('isSearching',isEqualTo: true);
    Query _gender=_searching.where('gender',isEqualTo: preferredGender);
    Query _ageless=_gender.where('age',isEqualTo: values.start.round());
   Query _agemore=_ageless.where('age',isLessThanOrEqualTo: values.end.round() );

_agemore.get().then((querySnapshots) {
  print(_ageless.toString());
      if(querySnapshots.docs.length == 0)
      {
        print('data is empty');
      }
      else
      {
          print('data found');
      }

  });
我已经在firestore中手动设置了数据,但我总是将输出数据设置为空。
写下上述语句的查询的最佳方法是什么?您可能需要为此创建一个额外的键。通常,当您执行查询时,android studio会抛出一个错误,并为您提供一个为您的项目创建索引的链接。

您能试试这个吗

    CollectionReference collection=FirebaseFirestore.instance.collection("Posts").doc(myMood).collection("Comments");
    Query  _searching=collection.where('isSearching',isEqualTo: true);
    Query _gender=_searching.where('gender',isEqualTo: preferredGender);
    Query _agemore=_gender.where('age',isLessThanOrEqualTo: values.end.round() );
    
    _agemore.get().then((querySnapshots) {
    print(_ageless.toString());
    if(querySnapshots.docs.length == 0)
    {
        print('data is empty');
    }
    else
    {
        print('data found');
    
    }
    
});    
});

我已经为它创建了一个索引