如何查询Firestore子文档

时间:2018-11-12 06:47:53

标签: android firebase dart flutter google-cloud-firestore

我正在开发一个应用程序,我想查询Firestore子文档。让我进一步解释。

  1. 我有一些存放汽车的文件,每个文件都有一辆带有说明的特定汽车。
  2. 在上述每个文档中,我都有一个名为user_data的子集合,它有自己的文档,在其中存储了将汽车添加到其愿望清单的用户的特定用户ID。

现在,如果子集合中存在用户ID,我想获取汽车文档。简而言之,我想获取特定用户的愿望清单。 我正在将streambuilder与listviewbuilder一起使用,但问题是如何执行此查询?

或者有没有更简单的方法?

2 个答案:

答案 0 :(得分:1)

Firestore中的查询很浅,这意味着它们仅从查询所针对的集合中获取项目。无法通过单个查询从顶级集合以及其他集合或子集合中获取文档。 Firestore一步不支持跨不同集合的查询。因此,您无法基于子集合中存在的项目从集合中获取项目。单个查询只能使用单个集合中的文档属性。

  

简而言之,我想获取特定用户的愿望清单。

因此,我能想到的最简单的解决方案是在每个用户对象下添加一组喜欢的汽车。您的新数据库结构应类似于以下内容:

Firestore-root
    |
    --- users
          |
          --- uid
               |
               --- favoriteCars : ["carId", "carId"]

通过这种方式,您可以查询数据库,以仅获取用户将其标记为收藏的汽车。您还可以将实际的汽车对象而不是这些ID存储在数组中。请查看 here 有关优缺点的更多详细信息。

答案 1 :(得分:0)

当前,Firebase Cloud Firestore不支持使用子集合进行查询。您可能必须以可能的查询方式来构造数据库。

  • 将用户ID存储在汽车文档中的数组中。
  • 使用单独的集合来保持用户与汽车之间的联系。

您可以从Firebase检出此视频。

Maps, Arrays and Subcollections, Oh My! | Get to Know Cloud Firestore