【问题标题】:Is it possible to use Where In with a Collection Group query in Firestore?是否可以在 Firestore 中将 Where In 与集合组查询一起使用?
【发布时间】:2020-07-16 21:57:35
【问题描述】:

在我的数据库中:

-用户(顶级收藏):
---用户1(文档):
----------宠物(子收藏):
--------------pet1(doc)
--------------pet2(doc)
---user2(doc):
----------宠物(子收藏):
--------------pet3(doc)
--------------pet4(doc)

如果我有一个 ID 列表:list("pet2", "pet3", "pet4)

有没有办法做这样的事情并返回一个 DocumentsSnapshots 列表?

firestore.collectionGruop("pets")whereIn(FieldPath.documentId(), list)

它适用于根集合,但我不知道这是否适用于集合组

【问题讨论】:

    标签: android google-cloud-firestore


    【解决方案1】:

    集合组查询是FieldPath.documentId() 上的过滤器无法按您期望的方式工作的唯一地方。这是因为有关此令牌实际工作方式的一些细节。如果您尝试这样做,您将收到如下错误:

    查询无效。通过 FieldPath.documentId() 查询集合组时,提供的值必须导致有效的文档路径,但 'x' 不是因为它有奇数个段。

    如果您想对集合组查询中的文档 ID 进行过滤,则需要将文档的 ID 存储为每个文档中字段的值。如果您使用名为“id”的字段,则可以像这样对该字段进行过滤:

    firestore
        .collectionGruop("pets")
        .whereIn('id', list)
    

    这会给你一个不同的错误,说你需要创建一个索引,并给你一个链接来这样做。创建该索引后(可能需要一些时间),您应该可以开始了。

    另请参阅:How to perform collection group query using document ID in Cloud Firestore

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 2021-05-13
      • 2015-11-07
      相关资源
      最近更新 更多