Cloud Firestore 数据库结构
Cloud Firestore database structuring
Cloud Firestore 的 Android 示例应用具有如下所示的数据库结构:
现在考虑第一家餐厅有大量评分的情况(这里的评分是第一家餐厅 ID 中其他文档的集合),我只想显示所有餐厅的基本详细信息,例如名称和城市。
我将通过创建如下所示的引用来完成此操作:
mRestaurantRef = mFirestore.collection("restaurants").document(restaurantId);
我有以下问题:
- 这是正确的做法吗,因为我正在获取文档快照,其中还包括我现在不需要的评级集合,因为它会降低加载速度?
- 我是否应该像在 firebase 实时数据库中那样更改 firestore 数据库结构并将其展平?
Firestore 优于 RTDB 的主要 differences/advantages 之一是,如果您请求快照,则不会检索文档的子集合。
这意味着当您调用 mRestaurantRef.get()
时,只会加载基本详情,不会加载评分
之后您可以通过单独的查询检索餐厅的评分(或有限数量的评分)。
您也可以调用 mFirestore.collection("restaurants").get()
(必要时使用 where/orderBy/limit)以获取所有餐厅的文档快照列表。同样,将仅检索独立于任何评级的基本数据。
Cloud Firestore 的 Android 示例应用具有如下所示的数据库结构:
现在考虑第一家餐厅有大量评分的情况(这里的评分是第一家餐厅 ID 中其他文档的集合),我只想显示所有餐厅的基本详细信息,例如名称和城市。
我将通过创建如下所示的引用来完成此操作:
mRestaurantRef = mFirestore.collection("restaurants").document(restaurantId);
我有以下问题:
- 这是正确的做法吗,因为我正在获取文档快照,其中还包括我现在不需要的评级集合,因为它会降低加载速度?
- 我是否应该像在 firebase 实时数据库中那样更改 firestore 数据库结构并将其展平?
Firestore 优于 RTDB 的主要 differences/advantages 之一是,如果您请求快照,则不会检索文档的子集合。
这意味着当您调用 mRestaurantRef.get()
之后您可以通过单独的查询检索餐厅的评分(或有限数量的评分)。
您也可以调用 mFirestore.collection("restaurants").get()
(必要时使用 where/orderBy/limit)以获取所有餐厅的文档快照列表。同样,将仅检索独立于任何评级的基本数据。