【问题标题】:Query firestore array of objects查询对象的firestore数组
【发布时间】:2018-05-30 15:03:26
【问题描述】:

我有 Firestore 集合事件

每个 事件 都有 date,它是包含两个字符串的对象数组, startTimeendTime

是否可以检索每个 events 列表中的 startTime 大于当前时间?

【问题讨论】:

标签: firebase google-cloud-firestore


【解决方案1】:

这在您的文档结构中是不可能的。您不能在查询中定位数组元素。相反,您可能希望将 max startTime 作为顶级字段存储在文档中,并在您的查询中使用它。

复制这样的数据以满足您的查询是很常见的。对于 NoSQL 数据库,您的数据结构应始终遵循您打算进行的查询。

【讨论】:

  • 还是这样吗?我需要做与OP基本相同的事情。我在数组中有多个日期,需要找到过去的日期。将单个日期存储在文档的顶层是没有意义的。请问有什么解决方法吗?
【解决方案2】:

您可以通过使用“array-contains”查询 firebase 来获取整个文档,但您必须搜索对象的确切属性以及对象本身的确切属性。在你的情况下,“endTime”和“startTime”。

firebase.firestore.collection('events').where("date", "array-contains", {endTime: "March 18 ....", startTime: "March 19 ...."})

【讨论】:

  • 这确实有效。谷歌应该想出一种更简单的方法来做到这一点。有时整个对象可能会有所不同:S
猜你喜欢
  • 2021-07-30
  • 2020-07-17
  • 2019-02-24
  • 2019-06-23
  • 2019-12-24
  • 2020-07-09
  • 1970-01-01
  • 2020-04-09
相关资源
最近更新 更多