我收集了2k个文档。我已经实现了分页,因此一次可以获取10个文档。文档如下所示:
docId
- name: "itemName"
- price: 20
- lastModified: May 22, 2020 at 1:23:22 PM UTC
要获取前10个元素,请使用以下查询:
Query query = db.collection("items").orderBy("name", ASCENDING).limit(10);
要获取下10个文档,我使用:
Query nextQuery = query.startAfter(lastVisibleDocumentSnapshot);
第一次打开应用程序时,我滚动了3页,因此总共30个文档将添加到缓存中。第二次打开应用程序时,我不想再次下载文档。由于我拥有lastModified
字段,因此我可以查询:
db.collection("items").whereGreaterThan("lastModified", someDate);
这将返回所有新的/修改的文档,这很不好,因为如果添加了200个文档,我会为它们付费。换句话说,对于我可能不感兴趣的文档,我将支付200次读取。只有更改了这30个文档中的一个,我如何才能进行读取操作?
答案 0 :(得分:0)
听起来您要执行的操作似乎无法处理您的数据。您所查询的查询范围不能与范围查询的字段不同。因此,如果您在lastModified
上进行范围查询,则也无法按name
进行订购。而且,如果您按name
订购,则不能按lastModified
使用范围过滤器。