代码之家  ›  专栏  ›  技术社区  ›  SMGhost

Firestore关系数据模型

  •  2
  • SMGhost  · 技术社区  · 6 年前

    1. 是否可以通过指定id或引用的列表来检索文档列表,而不必对每个id进行单独的查询?到目前为止,这似乎是不可能的。
    2. 我有一个商店根收集和一个单独的根收集的项目在那家商店。我想能够按指定的商品对商店进行分类,找出最便宜的地方。但我有一个问题,因为如果我按价格对商品进行排序,得到大约1000个结果,我需要执行1000个查询来检索包含这些商品的实际商店。我该如何优化它?

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Glen Little    5 年前
    1. 是否可以通过指定id或引用的列表来检索文档列表,而不必对每个id进行单独的查询?到目前为止,这似乎是不可能的。

    是的,这是可能的。任务的 whenAllSuccess whenAll List 按照他们被传给 whenAllSuccess() 方法。因此,正如你在官方文件中看到的,你可以通过一个论点 Collection<? extends Task<?>> Here 这是一个使用引用的例子。

    1. 在查询文档时,是否可以从文档字段中包含引用对象,而不必对该引用对象进行第二次查询?看来你现在不行。

    是的,这是可能的。上面例子的答案是,它就是这样做的。如果您想使用单独的查询,还可以研究另一种方法 here . 你也会得到一份名单。

    1. 我有一个商店根收集和一个单独的根收集的项目在那家商店。我想能够按指定的商品对商店进行分类,找出最便宜的地方。但我有一个问题,因为如果我按价格对商品进行排序,得到大约1000个结果,我需要执行1000个查询来检索包含这些商品的实际商店。我该如何优化它?

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

    编辑: