【问题标题】:Firestore how to query field containing any of the values in the arrayFirestore如何查询包含数组中任何值的字段
【发布时间】:2021-01-22 01:18:26
【问题描述】:

假设我的 Firestore 数据库包含一组文档,每个文档都有一个包含大量数字数组的字段。例如:

{
arr: [11,13,24,16,37,50]
},
{
arr: [12,34,55,56]
},
{
arr: [12,16,27,59]
}

如何进行查询以返回“arr”字段包含某个数组中的任何值的所有文档?

例如,如果我使用 [16,13] 进行查询,我只会得到第一个和第三个文档(第一个包含 16 和 13,第三个包含 16)。

请注意,我的查询中的'arr'数组和数组都可以包含大量值(> 1000),所以我不能使用'array-contains-any'.

可以这样做吗? 我能否以不同的方式构建我的数据库以实现该目标?

【问题讨论】:

  • 您打算使用哪种语言来执行此操作?
  • Flutter,但主要是 Firebase/Firestore 问题

标签: firebase flutter google-cloud-firestore


【解决方案1】:

如您所知,array-contains-any 最高支持 10 comparison values。如果您有超过 1000 个值的大型数组,那么您最好将您的集合重组为如下所示:

示例:

arr:
  arr_name:
    title: "arr_title"
        arr_1: {
            "10": true,
            "11": true,
            "12": true
        }

示例:

db.collection("arr_name")
    .whereField("arr_1.10", isEqualTo: true)
    .whereField("arr_1.12", isEqualTo: true)

【讨论】:

    猜你喜欢
    • 2020-12-22
    • 2020-12-01
    • 2020-04-25
    • 2020-01-08
    • 2017-01-14
    • 1970-01-01
    • 2020-10-20
    • 2021-04-15
    相关资源
    最近更新 更多