Cloud Firestore查询结果集为空

时间:2017-11-25 12:21:37

标签: android google-cloud-firestore

我正在尝试对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。

有人可以告诉我,如果它根本不受支持或我在某处错了吗?

2 个答案:

答案 0 :(得分:0)

如果您还没有,我相信您必须创建Cloud Firestore index

简而言之:

  

Cloud Firestore需要为每个查询提供索引,以确保最佳状态   性能。所有文档字段都自动编入索引,因此查询   只使用等式子句不需要额外的索引。如果你   尝试复合查询与范围子句不映射到   现有索引,您收到错误。错误消息包括a   直接链接以在Firebase控制台中创建缺失的索引。

答案 1 :(得分:0)

Firestore查询条件一起 AND 。所以你要求的是:给我一个城市更多超过900万更少超过900万人。这是一个空洞的集合:没有一个城市可以有更多的少于900万。