【发布时间】:2020-10-10 06:00:23
【问题描述】:
我有点纠结在 Firestore 的 Android SDK 中创建查询。我想将文档限制为仅来自过去一周的文档,以减少文档数量,并使用用户提供的文本过滤结果。我想使用whereGreaterThan 子句和created 字段作为日期,startAt 和endAt 子句用于过滤id 字段。
但是,有一个问题。 SDK 要求第一个orderBy 子句使用与whereGreaterThan 子句相同的字段。另一方面,startAt 和endAt 似乎也绑定到第一个 orderBy 子句。
Calendar oneWeekAgo= Calendar.getInstance();
oneWeekAgo.add(Calendar.DATE, -7);
Query query = firestore.collection(BuildConfig.FULL_PATH)
.whereGreaterThan("created",oneWeekAgo.getTime())
.orderBy("created", Query.Direction.ASCENDING)
.orderBy("id", Query.Direction.ASCENDING)
.startAt(filter)
.endAt(filter + "z");
有没有办法将 .startAt 和 .endAt 绑定到第二个 orderBy?或者以其他方式实现从某个日期之后创建的 firestore 获取过滤文档的目标?
如果我删除 whereGreaterThan 和第一个 orderBy 子句,查询会从所有文档中获取过滤结果,而不仅仅是在过去一周创建的文档。
【问题讨论】:
标签: android google-cloud-firestore