Firebase Firestore只保存最新文档的经济高效的方法?
我有一个包含日志的子集合,但只想保留X个最新的日志,用于存储问题。我正试图找出最经济有效的方法来保持日志收集量小。(所有日志都有时间戳) 更新 似乎解决方案是每X天运行一次维护作业服务器端,以删除额外的日志 但这引出了我的下一个问题有没有办法查询限额的对立面?例如:Firebase Firestore只保存最新文档的经济高效的方法?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我有一个包含日志的子集合,但只想保留X个最新的日志,用于存储问题。我正试图找出最经济有效的方法来保持日志收集量小。(所有日志都有时间戳) 更新 似乎解决方案是每X天运行一次维护作业服务器端,以删除额外的日志 但这引出了我的下一个问题有没有办法查询限额的对立面?例如: 我有105个日志,我需要先保留100个日志。我可以先查询除100以外的所有数据吗?或者,这是唯一一种咬紧牙关,先读取105次,然后删除5次的方法。为什么不保留它们呢?您始终可以运行外部每周/每月cron作业,该作业调用https触发
我有105个日志,我需要先保留100个日志。我可以先查询除100以外的所有数据吗?或者,这是唯一一种咬紧牙关,先读取105次,然后删除5次的方法。为什么不保留它们呢?您始终可以运行外部每周/每月cron作业,该作业调用https触发器以批量删除早于特定日期的日志 日期,并且currentDate是unixTimeStamp
检索文档时,您可以使用
where(date),为什么不保留它们?您始终可以运行外部每周/每月cron作业,该作业调用https触发器以批量删除早于某个日期的日志
日期,并且currentDate是unixTimeStamp
当您检索文档时,您可以使用where(date),每日或每周工作听起来差不多
OrderBy和limit应该适用于查询
it("should order and limit", () => {
var logRef = db.collection("log");
// [START order_and_limit]
logRef.orderBy("date").limit(10)
// [END order_and_limit]
});
每天或每周的工作听起来不错
OrderBy和limit应该适用于查询
it("should order and limit", () => {
var logRef = db.collection("log");
// [START order_and_limit]
logRef.orderBy("date").limit(10)
// [END order_and_limit]
});
在firestore中查询结果时,您的集合有多大并不重要:),但查询是读取,对吗?因此查询100个文档=100次读取(如果要删除,则100次删除)没错。但如果将其存储在子集合中又有什么关系呢?是或否?最后,您总是查询X数量的文档。这些X数量等于:将所有内容存储在一个大集合中(这无关紧要),或将所有内容存储在子集合中。在firestore中查询结果时,无论集合有多大:)但问题是读,对吗?所以query 100 docs=100次读取(如果你想删除,那么100次删除)这是真的。但如果将其存储在子集合中又有什么关系呢?是或否?最后,您总是查询X数量的文档。这些X数量等于:将所有内容存储在一个大集合中(这无关紧要),或将所有内容存储在子集合中。我确实在考虑保留它们,然后偶尔运行一次cron作业。但问题是,我不想删除比X早的,我想保留Y最新的。不确定这样做的最佳方式。我在想:按时间顺序读取所有日志,得到第10个时间戳,然后重新查询时间比时间戳早的位置。无论如何,只需在一个查询中执行此操作?在这一点上,我想我正在阅读所有的日志。最好是把它们全部删除,删除所有比第十个大的。我真的在考虑保留它们,然后偶尔运行一次cron作业。但问题是,我不想删除比X早的,我想保留Y最新的。不确定这样做的最佳方式。我在想:按时间顺序读取所有日志,得到第10个时间戳,然后重新查询时间比时间戳早的位置。无论如何,只需在一个查询中执行此操作?在这一点上,我想我正在阅读所有的日志。最好是把它们全部删除,删除所有比第10个大的。