如何根据对文档本身中值的操作查询 Firestore

How can I query Firestore based upon an operation on a value in the document itself

我发现很难用词来表达,所以让我试着举个例子。假设我有一个包含事件时间的文档集合,以及我希望通知某人的事件发生前的小时数。这是一个例子:

{
    personToNotify: DocumentReference(people/alex)
    hoursBeforeEvent: 5,
    eventTime: TimeStamp()
}

我目前有一个云功能 运行 每小时 - 它会提取所有文件进行检查。这显然在规模上是可怕的。有没有办法只提取相关文件? IE。 db.collection("events").where("hoursBeforeEvent", "==", TimeStamp - data.eventTime).get().

时间示例当然有点乏味,但我过去遇到过类似的问题 - 那么,有没有一种方法可以根据对该文档的不同字段执行的操作来提取数据?

无法在 Firestore 查询中进行计算。您想要 order/filter 的值必须是文档中字段的文字值。

我建议在文档中添加一个字段 notificationTime,您在编写 eventTime and/or hoursBeforeEvent 时设置该字段,然后将其用于您的查询。