Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase Firestore只保存最新文档的经济高效的方法?_Firebase_Google Cloud Firestore - Fatal编程技术网

Firebase Firestore只保存最新文档的经济高效的方法?

Firebase Firestore只保存最新文档的经济高效的方法?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我有一个包含日志的子集合,但只想保留X个最新的日志,用于存储问题。我正试图找出最经济有效的方法来保持日志收集量小。(所有日志都有时间戳) 更新 似乎解决方案是每X天运行一次维护作业服务器端,以删除额外的日志 但这引出了我的下一个问题有没有办法查询限额的对立面?例如: 我有105个日志,我需要先保留100个日志。我可以先查询除100以外的所有数据吗?或者,这是唯一一种咬紧牙关,先读取105次,然后删除5次的方法。为什么不保留它们呢?您始终可以运行外部每周/每月cron作业,该作业调用https触发

我有一个包含日志的子集合,但只想保留X个最新的日志,用于存储问题。我正试图找出最经济有效的方法来保持日志收集量小。(所有日志都有时间戳)

更新

似乎解决方案是每X天运行一次维护作业服务器端,以删除额外的日志

但这引出了我的下一个问题有没有办法查询限额的对立面?例如:


我有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个大的。