4

Cloud Firestore 的 Android 示例应用具有如下所示的数据库结构:

在此处输入图像描述

现在考虑第一家餐厅有大量评分的情况(这里评分是第一家餐厅 id 中其他文档的集合),我只想显示所有餐厅的基本细节,如名称和城市。

我将通过创建如下所示的引用来完成此操作:

mRestaurantRef = mFirestore.collection("restaurants").document(restaurantId);

我对此有以下疑问:

  • 这是正确的方法吗,因为我正在获取一个文档快照,其中还包括我现在不需要的评级集合,因为它会降低加载速度?
  • 我应该像在firebase实时数据库中那样更改firestore数据库结构并将其展平吗?
4

1 回答 1

4

Firestore 与 RTDB 相比的主要区别/优势之一是,如果您请求快照,则不会检索文档的子集合。

这意味着当您调用时,只会加载基本详细信息而不加载评级mRestaurantRef.get()

之后,您可以使用单独的查询检索餐厅的评级(或有限数量的评级)。

您还可以调用mFirestore.collection("restaurants").get()(如有必要,使用 where/orderBy/limit)来获取所有餐厅的文档快照列表。同样,将仅检索基本数据,而与任何评级无关。

于 2017-10-06T07:46:56.640 回答