在我的项目中,当每个用户进入应用程序(Swift-iOS)时,他们会将其时间戳字段更新为当前时间之后的24小时。 Firestore中的数据树如下所示。每个用户数据作为文档,都包含在“用户”集合中。
users-collection
user1-document
username: nameA
timestamp: 1574102072
user2-document
username: nameB
timestamp: 1574102234
除非他们在24小时内再次进入应用程序,并且基于注册时间戳记的时间到了,否则我要发送推送通知(FCM)。
我计划安排云功能,但是在那一刻,云功能必须定期读取太多文档(例如,每5分钟),并找到结束的时间戳以发送通知。这确实是昂贵的方法。有没有其他方法可以解决此问题?
答案 0 :(得分:0)
我建议您使查询按时间过滤文档,而不是查询整个集合并在客户端上检查时间,因此您只能获取所需的文档。请参阅documentation。例如:
usersRef = db.collection('users').where('timestamp', '>', current_time);
如果将结果集限制为仅查找实际需要的文档,则查询将更快,更便宜。