当前位置: 首页 > 知识库问答 >
问题:

我如何避免阅读我对Firestore不感兴趣的文档?

毛胜
2023-03-14

我收集了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个文档中有一个发生了更改,我如何才能支付读取操作费用?

共有1个答案

荣晨朗
2023-03-14

听起来,你试图用你的数据做的事情是不可能的。不能让查询按与范围查询不同的字段排序。因此,如果您在lastModified上有一个范围查询,那么您也不能按name订购。如果按名称订购,则不能按上次修改使用范围过滤器。

 类似资料:
  • 本文向大家介绍查找对C ++感兴趣的程序,包括了查找对C ++感兴趣的程序的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论一个寻找复利的程序。 复利是通过将当前利息加到本金上,然后根据更新后的金额计算利息而得出的利息。 示例 输出结果

  • 问题内容: 我正在尝试使用opencv python获取图像区域(ROI)。使用的opencv版本是2.4.3。但是,当我尝试调用API时 它返回此错误 同样在检查文档时,似乎表明此api是旧版python函数。 http://docs.opencv.org/2.4.3/search.html?q=setimageroi 我不确定如何使用当前版本的python中的opencv获得投资回报。有人可以

  • 必须确保进度必须由我们的同步机制提供。 在转向变量机制中,由于不想进入临界区的进程并没有考虑其他感兴趣的进程,所以没有提供进展。 另一个进程也将不得不等待,而不管临界区内部没有进程。 如果操作系统可以利用额外的变量以及转向变量,那么这个问题就可以解决,而且我们的问题可以在大部分范围内提供进展。 感兴趣的变量机制利用额外的布尔变量来确保提供进度。 对于进程Pi 对于进程Pj 在这个机制中,使用了一个

  • 问题内容: 我有按日期排序的旅行数据(大集合)列表。 现有行为 我将所有行程数据存储到SqlLite Db中。对于添加的每个新数据,我通常都会收到fcm通知,并且使用上次更新的时间概念仅同步新添加的数据。这样,当cx打开应用程序时,他将始终从我的数据库中读取数据,从而节省了 读取 和 网络 操作。 如何使用Firestore达到相同的目的? 需要考虑的几个问题: Firestore get()始终

  • 问题内容: 我有以下从缓冲读取器读取数据的示例: 每当缓冲读取器中出现某些情况时(在这种情况下),将执行循环中的代码。在我的情况下,如果客户端应用程序将某些内容写入套接字,则将执行循环中的代码(服务器应用程序中)。 但是我不明白它是如何工作的。等待直到缓冲读取器中出现某些内容,当其中出现某些内容时,它将返回并执行循环中的代码。但是什么时候可以退货。 还有另一个问题。上面的代码摘自一个方法,我在线程

  • 问题内容: 我通过遵循一些pygame教程来学习Python 。 在其中我发现了关键字 self的 广泛使用,并且主要来自Java背景,我发现自己一直忘记键入 self 。例如,代替我输入,因为对我来说, rect 已经是该类的成员变量。 Java的并行的我能想到的这种情况是有前缀成员变量的所有引用与 此 。 我是否在所有成员变量前面都加上了 self 前缀,还是有一种方法可以声明它们,而不必这样