首页 > 解决方案 > MongoDB 文件和集合清除

问题描述

我们使用 MongoDB 文件和块来存储大小超过 16 MB 的图像和 pdf 文件。我们需要在一天结束时清除这些数据。

我们发现 MongoDB 提供了一个内置功能来使用 TTL 索引删除文档。因此使用 files 集合的 uploadDate 列定义了 TTL 索引。它运行良好并从文件集合中删除记录。但是块集合中的相关记录仍未删除,这是有问题的。

另一种选择是我们考虑在块集合中添加 uploadDate 字段并在那里定义 TTL 索引,但找不到实现它的方法。我看到我们可以在文件集合中添加元数据字段,但没有找到在块集合中执行此操作的方法。

我们讨论的另一个选项是 - 因为我们有一个 spring boot 微服务,我们可以有一个 spring 调度程序以定义的时间间隔调用并调用一个服务方法,该方法将调用 delete() gridFS API 以删除过期文档。但是由于我们可以使用一个公共数据库来拥有这个微服务的多个实例,那么每个实例最终都会为同样的事情运行自己的调度程序服务,这似乎是不正确的。

如果您遇到这种情况并且知道实现这一目标,那么这将对我有所帮助。

谢谢

标签: mongodbspring-data-mongodbgridfs

解决方案


推荐阅读