【问题标题】:Filter and get all sub-collections by using where clause in Firestore使用 Firestore 中的 where 子句过滤并获取所有子集合
【发布时间】:2020-12-22 07:40:30
【问题描述】:

在 Firestore 中,我在每个集合中都有一些子集合,如下所示:

Collection1 -> id -> Sub-collection -> scId -> Data

所以在这里我想借助where 子句从子集合中获取所有数据。我尝试了一个像下面这样失败的查询。

 db.collection("Collection1").whereEqualTo("eDate", selectedDate)
                    .get().addOnSuccessListener(queryDocumentSnapshots -> {
                List<Exp> mData = queryDocumentSnapshots.toObjects(Exp.class);

这里eDate 位于每个子集合内的Data 之下。 那么有什么方法可以做到这一点,或者有什么建议可以做到这一点或关于我在这里犯的错误吗?

【问题讨论】:

    标签: android google-cloud-firestore


    【解决方案1】:

    Firestore 查询是浅层的,不会扩展到被查询的命名集合之上或之下。您在此处显示的查询只会立即返回“Collection1”中的文档。它不会考虑嵌套子集合中的任何文档。

    如果您想要子集合中的文档,则必须为该子集合构建一个 CollectionReference,并单独查询它。您不能同时查询嵌套在文档下的所有子集合。您不能同时查询不同命名的子集合。

    如果此行为不能满足您应用的需求,您应该考虑重组数据以实现此目的,或者构建您的应用以根据需要执行尽可能多的查询,以便从它们所在的所有集合中获取所有文档。

    【讨论】:

    • 谢谢道格。您是否可以举一个小例子,如何为该子集合构建一个 CollectionReference,并单独查询它。我的意思是一些线索或任何链接,如果你有我会得到一些帮助的。
    猜你喜欢
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2012-06-20
    • 2023-01-13
    • 1970-01-01
    • 2018-04-03
    相关资源
    最近更新 更多