我在Google Cloud Firestore中的查询条件有问题。
任何人都可以帮助我。
下面是我的代码,以获得第一个以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为“ HA_”或“ XE_”开头的文章的最后ID
例如上图:
现在我得到一个错误
java.util.concurrent.ExecutionException:com.google.api.gax.rpc.InvalidArgumentException:io.grpc.StatusRuntimeException:INVALID_ARGUMENT:不等式过滤器属性和第一排序顺序必须相同:articleId和id
如以下错误所述:
不等式过滤器属性和第一排序顺序必须相同:articleId和id
因此,在您的案例articleId
和中,您无法使用不同的属性来过滤元素并同时对其进行排序id
。
官方文档中还有一个示例,说明如何不这样做:
范围过滤器和一阶按不同字段
citiesRef.whereGreaterThan("population", 100000).orderBy("country"); //Invalid
因此,要解决此问题,您应该对同一文档属性进行过滤和排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句