java - 字段上的 Firestore 查询顺序与不同字段上的过滤器

标签 java firebase google-cloud-firestore

我在 google Cloud Firestore 中的查询条件有问题。

任何人都可以帮助我。

This is my Collection and documents

以下是我获取第一个以 HA_ 开头的文档并按 ID DESC 排序的代码

public Article getLastArticleProvider() {
    ApiFuture<QuerySnapshot> query = firebaseDB.getTblArticles()
            .whereGreaterThanOrEqualTo("articleId", "HA_")
            .orderBy("id", Query.Direction.DESCENDING)
            .limit(1)
            .get();

    QuerySnapshot snapshotApiFuture;
    Article article = null;

    try {
        snapshotApiFuture = query.get();
        List<QueryDocumentSnapshot> documents = snapshotApiFuture.getDocuments();
        for (QueryDocumentSnapshot document : documents) {
            article = document.toObject(Article.class);
        }
    } catch (InterruptedException | ExecutionException e) {
        return null;
    }
    return article;
}

我想获取文章的最后一个 ID,文章 ID 以“HA_”或“XE_”开头

例如上图:
  • if(articleId start with "HA_") => 返回 id 831 的对象
  • if(articleId start with "XE_") => 返回 id 833 的对象

  • 现在我收到一个错误

    java.util.concurrent.ExecutionException: com.google.api.gax.rpc.InvalidArgumentException: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: inequality filter property and first sort order must be the same: articleId and id

    最佳答案

    正如以下错误所说:

    inequality filter property and first sort order must be the same: articleId and id


    因此,您不能使用不同的属性过滤元素并同时对它们进行排序,在您的情况下是 articleIdid
    还有一个例子说明 不是 如何在 official documentation 中做到这一点:
  • 范围过滤器和不同字段上的 first orderBy
     citiesRef.whereGreaterThan("population", 100000).orderBy("country"); //Invalid
    

  • 因此,要解决此问题,您应该对同一文档属性进行过滤和排序。

    关于java - 字段上的 Firestore 查询顺序与不同字段上的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54850287/

    相关文章:

    javascript - 当某个延迟部分(例如 setTimeout 或 process.nextTick)中发生异常时,使用 J2V8 的 Java 应用程序会崩溃

    java - play框架2.1.3扩展play.api.templates.Html

    firebase - 为什么 Firebase 功能部署极其缓慢?

    java - 每次单击按钮时 Firebase 都会创建一个新对象

    java - 如何通过传递查询来删除 Firestore 文档?

    java - 我可以使用 HtmlUnit 来监听资源加载事件吗?

    java - 字符串的 HashSet 和仅检索每个元素的第一个单词

    ios - 查看特定设备的分析

    firebase - Flutter Firebase时间戳搜索查询

    javascript - 文档内嵌套集合的 Firestore onSnapshot