【问题标题】:Firestore: use "array-contains" query while ignoring specific Object attributeFirestore:在忽略特定对象属性的同时使用“数组包含”查询
【发布时间】:2021-08-11 17:24:14
【问题描述】:

我有一个集合,其中每个文档都有一个字段,该字段是一个数组并包含对象,其中每个对象都类似于{key: 0, value: "Some Value"}。除了忽略key 属性外,是否可以选择进行类似array-contains 的比较?喜欢查找所有包含数组的文档,其中包含一个其 Value 属性等于某个值的对象?

谢谢

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    array-contains 操作搜索完全匹配。它不能只检查数组中信息的一个子集。

    常见的解决方法是更改​​您的数据模型以允许用例,这里通过添加另一个仅包含您可用信息的数组。例如,如果您有一个包含每个用户的一些个人资料信息的数组,但还希望能够仅查询他们的用户名,那么您最终会得到两个数组字段:

    users: [
       { name: "AstroPrussia", url: "https://stackoverflow.com/users/5460401" },
       { name: "puf", url: "https://stackoverflow.com/users/209103" }
    ],
    usernames: [
      "AstroPrussia",
      "puf"
    ]
    

    现在,如果您想搜索整个个人资料,您可以在 users 字段上执行 array-contains。但如果您只有用户名,您将在 usernames 字段上执行 array-contains

    【讨论】:

    • 好的,谢谢!我可能最终会完全删除 key 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 2021-12-08
    • 2021-11-16
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多