查询Firestore中的对象数组

8
我有一个Firestore集合 events
每个event都有一个date,其中包含两个字符串对象的数组,分别是startTimeendTime

enter image description here

是否可以检索出所有至少有一个startTime大于当前时间的事件


1
请查看此文档条目,它可能会有所帮助:https://firebase.google.com/docs/firestore/solutions/arrays - Renaud Tarnec
2个回答

8

您的文档结构无法实现此操作。无法在查询中针对数组元素进行定位。相反,您可能希望将最大的startTime作为文档级别字段存储,并在查询中使用该字段。

像这样复制数据以适应查询是很常见的。使用NoSQL数据库时,您的数据结构应始终遵循您打算执行的查询。


这还是现状吗?我需要做的基本上与 OP 相同。我在数组中有多个日期,需要找到过去的日期。在文档的顶层存储单个日期没有意义。请问有什么解决方法吗? - mosses

6

使用 "array-contains" 查询 Firebase 可以获取整个文档,但必须搜索对象的准确属性和准确对象本身。在您的情况下是 "endTime" 和 "startTime"。

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

这真的有效。Google应该想出一种更简单的方法来做这件事。有时整个对象可能会有所不同 :S - Danny Fallas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接