gpt4 book ai didi

java - Firestore 关系数据模型

转载 作者:搜寻专家 更新时间:2023-11-01 09:23:44 25 4
gpt4 key购买 nike

我正在学习在 Android 上使用 Cloud Firestore,但到目前为止我无法找到一些问题的答案。

  1. 是否可以通过指定 ID 或引用列表来检索文档列表,而无需对每个 ID 进行单独查询?到目前为止,这似乎是不可能的。
  2. 是否可以在不对该引用对象进行第二次查询的情况下查询文档时包含文档字段中的引用对象?看来你现在不能。
  3. 我有一个商店根集合和一个单独的根集合用于该商店中的项目。我希望能够按最便宜的指定商品对商店进行排序。但是我有一个问题,因为如果我按价格对商品进行排序并且得到大约 1000 个结果,我需要进行 1000 次查询才能检索包含这些商品的实际商店。我将如何优化它?

我不确定是否应该为此创建 3 个单独的 SO 问题,所以我只是将它们放在一个中。如果这是错误的方法,请告诉我。

最佳答案

  1. Is it possible to retrieve a list of documents by specifying a list of id's or references without doing separate queries for each id? So far it seems it's not possible.

是的,这是可能的。任务的whenAllSuccess方法(和其他 whenAll 方法)会将任务的结果传递给 List 中的回调按照传递给 whenAllSuccess() 的顺序方法。因此,正如您在官方文档中看到的那样,您可以将 Collection<? extends Task<?>> 作为参数传递. <强> Here 是使用引用执行此操作的示例。

  1. Is it possible to include reference object from document field when querying document without doing a second query for that reference object? It seems you can't at the moment.

是的,这是可能的。上面例子的答案,这就是它的作用。如果你想使用单独的查询,你也可以看看另一种方法 here 。您还将获得一份 list 。

  1. I have a shop root collection and a separate root collection for items in that shop. I want to be able to sort shops by specified item for where it is cheapest. But I have a problem, since if I sort items by price and I get like 1000 results, I need to do 1000 queries to retrieve actual shops which contain those items. How would I optimize this?

Firestore 中的查询很浅:它们仅从运行查询的集合中获取项目。无法在单个查询中从顶级集合和其他集合或子集合中获取文档。 Firestore 不支持一步跨不同集合的查询。单个查询只能使用单个集合中文档的属性。所以要解决这个问题,你需要给每个产品添加一个新的属性,这个属性实际上应该是商店的id。要获取所有商品最便宜的商店,您应该查询商品集合,获取最便宜的商品,然后再次查询以获取该商品所属商店的数据。

编辑:

一般来说,人们高估了他们将获得的使用量。所以(一般来说)我再次建议您在真正需要优化之前不要担心优化。但是,关于 #1,是的,它进行了一系列查询,但这是在 Firestore 中可以完成的方式。但别担心,Firestore 在这种情况下工作得很好。关于#2 和#3,不,它不执行查询串联,但即使您使用两个查询,它也能非常快速地工作。嵌套监听器没有错。

关于java - Firestore 关系数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52463530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com