【问题标题】:Firestore query a lot of documentsFirestore 查询很多文档
【发布时间】:2018-05-08 09:41:11
【问题描述】:

我有一个包含大量数据的 Firestore 数据库。

在我的应用程序中,我必须一次从中获取大量文档。 我知道它们的确切键。一次最多 500-600 个文档,平均 300 个文档,每个文档只有 3 个字段。 将它们一个接一个地放入一个新线程并请求每个线程的最佳方法是什么?这需要很多并行连接..

这就是我现在所做的,但它有点慢(几秒钟),我现在正在寻找更好的解决方案。我没有机会将这些合并到更大的文档中,因为我可能需要非常不同的一组...

我在 ktor 后端服务器上运行这些。

【问题讨论】:

  • 是否有一个字段可以添加到这些文档中以允许您运行查询?这将是最快的方法。在 node.js SDK 中有一个 .getAll 方法。我正在努力在reference documentation 中为 Android 找到类似的东西
  • 我使用的是管理 API,因为它是一个 ktor 后端服务器,我没有看到类似的东西。
  • 在这种情况下,我可以在几分钟内为您发布答案。我不确定它对 500 个文档的效果如何。您可能会更好地在您的应用中使用分页,并且每次都获得更小的块。
  • 在我的特殊情况下无法分页。

标签: firebase kotlin nosql google-cloud-firestore


【解决方案1】:

使用 Admin SDK,您可以使用getAll(链接到文档)轻松地同时检索多个文档。只需致电firestore.getAll 并传递文档引用列表。

【讨论】:

  • 好的,现在我明白了,有一个 getAll 方法,它可能会对我有所帮助。我将很快对其进行测试和基准测试。但是,我仍在使用 kotlin ktor 后端,带有 java admin sdk,所以链接不正确。我找到了 get all 方法,我可以这样称呼它: val db = FirestoreClient.getFirestore() db.getall(....){...}
  • 我必须承认我不知道 Java Admin SDK。我假设 Admin SDK 只支持 Node.js。我将查看 Java SDK 并更新我的答案
  • 请更新它,然后我可以接受它作为一个好的答案。我的 API 现在大约是原来的 2 倍:基于正常协程的多个并行请求:~2500 微秒使用 get all 方法:~1400 微秒这非常适合我的使用。
  • 进行了相当多的搜索,但我找到了参考资料并更新了答案。很高兴听到它解决了您的问题。
猜你喜欢
  • 2020-12-12
  • 2020-07-24
  • 2018-07-12
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
  • 2018-07-06
相关资源
最近更新 更多