【问题标题】:How do I use array-contains for array containing map [duplicate]如何将数组包含用于包含地图的数组[重复]
【发布时间】:2019-08-28 11:10:34
【问题描述】:

在 Cloud Firestore 中,我需要使用 array-contains 查询在包含地图的数组中查找匹配项。

我可以很容易地匹配直接的字符串、数字等,但是当数组的值是一个映射时它总是会失败。文档没有提到这是否可能。

这里是一些数据的例子

{
 data:
    [
        item_1: {...},
        item_2: {...}
    ]
}

这是一个查询示例

db.collection("list")
  .where("data", "array-contains", "item_1")
  .get()
  .then(collectionRef => {
      //do something with collection
  })

我希望数组包含与地图的最高值 (item_x) 匹配,但目前它与此不匹配。我认为这是因为它想将地图的全部内容匹配为数组项的“值”。

任何帮助将不胜感激。如果这是不可能的,我可能不得不重新考虑我的数据结构。对于上下文,我在云函数中使用它在更新原始文档时更新数组中的项目(它们是对文档的引用)。

【问题讨论】:

标签: javascript firebase google-cloud-firestore


【解决方案1】:

array-contains 查询只匹配数组中的整个项目。如果该项目是一个对象,则查询必须提供完整的、精确的对象以匹配数组中的相等性。

不支持您现在正在执行的操作。您必须在文档中提供一些其他字段以进行搜索,这可能会复制该文档中的数据,这对于 NoSQL 类型的数据库很常见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2022-01-21
    • 1970-01-01
    • 2017-03-10
    • 2011-11-04
    • 1970-01-01
    相关资源
    最近更新 更多