首页 > 解决方案 > 如何在 Firestore 文档中查询包含给定值的文档?

问题描述

我的 Firestore 结构如图所示

在此处输入图像描述

我的 Firestore 文档有很多文档,其中一个如图所示。在我的 Android 应用程序中,我想查询所有具有“3P”、“紧急”和“任务挑战”值的文档。这意味着如果一个文档有“3P”、“紧急”和“任务挑战”,那么这个文档应该是我的查询结果。如果文档只有“3P”但没有其他值(如“紧急”、“任务挑战”),那么它不应该出现在我的查询结果中。如何在 Firestore 中执行此操作。

标签: androidfirebasegoogle-cloud-firestore

解决方案


我认为还不能'array-contains-all'在 Firestore 中执行类似的操作。@Doug 有一个类似案例的答案

每个查询最多可以使用一个数组包含子句。

目前最好的方法是使用地图并使用多种whereEqualTo方法:

db.collection("dungeon")
    .whereEqualTo("textMap.3P", true)
    .whereEqualTo("textMap.urgent", true)
    .whereEqualTo("textMap.mission_challenge", true)
    .get()

文件:

{
  ...otherFields,
  textMap: {
    "urgent": true,
    ...otherMapFields
  }
}

推荐阅读