首页 > 解决方案 > 查询包含子集合的文档

问题描述

有没有办法在单个查询中查询包含特定子集合(或任何子集合)的所有文档?

这个答案:是否可以检查集合或子集合是否存在?建议使用文档长度。是否可以在单个查询中进行此检查?

理想情况下,这样的事情是可能的:

db.collection("stuff")
            .whereEqualTo("fu", true)
            .containing("subcollection");

上下文:我正在使用 FirestoreRecyclerAdapter 使用此查询填充 RecyclerView。这就是为什么我不能在本地进行过滤。我知道在文档中引入指标字段可以解决问题,但最好避免这种情况。

标签: androidfirebasegoogle-cloud-firestorefirebaseui

解决方案


我认为这样的查询是不可能的。

我能想到的最好的方法是在父文档中保留一个字段,当您向子集合添加内容时该字段会标记。

db.collection("stuff")
  .whereEqualTo("fu", true)
  .whereEqualTo("somethingAddedToSubcollection", true);

诚然并不理想,因为现在每次写入子集合都需要对文档本身进行第二次写入,所以我希望其他人知道更好的解决方案。


推荐阅读