我正在尝试对firebase docs here中提供的示例数据运行以下查询:
cities.whereLessThan("population", 9000000)
.whereGreaterThan("population", 9000000)
.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()) {
Logger.log_error(TAG + " Task successful Result is Empty = " + task.getResult().isEmpty());
}else {
Logger.log_error(TAG + " Task failed = " + task.getException().getMessage());
}
}
});
我期望得到人口少于900万且超过900万的城市。最终我想要实现的目标是: select * from TABLE where population&lt;&gt; 9000000通过在FireStore查询中结合whereLessThan和whereGreaterThan。
有人可以告诉我,如果它根本不受支持或我在某处错了吗?
答案 0 :(得分:0)
如果您还没有,我相信您必须创建Cloud Firestore index
简而言之:
Cloud Firestore需要为每个查询提供索引,以确保最佳状态 性能。所有文档字段都自动编入索引,因此查询 只使用等式子句不需要额外的索引。如果你 尝试复合查询与范围子句不映射到 现有索引,您收到错误。错误消息包括a 直接链接以在Firebase控制台中创建缺失的索引。
答案 1 :(得分:0)
Firestore查询条件一起 AND 。所以你要求的是:给我一个城市更多超过900万和,更少超过900万人。这是一个空洞的集合:没有一个城市可以有更多的和少于900万。