0

我正在使用Spring Batch MongoDB API。为了释放 MongoDB 中的一些空间,我决定通过从以下集合中删除任何超过两个月的数据来清理作业执行元数据: - JobInstance - JobExecution - ExecutionContext - StepExecution

有什么办法可以用 Spring Batch 做到这一点,或者我应该创建一个 Dao 并批量删除每个集合的旧数据。

4

2 回答 2

1

您可以为提到的集合设置TTL 索引(使用 mongo Shell)。

如果您需要释放磁盘空间(仅适用于 WiredTiger),您可以使用compact命令(compact需要dbAdmin权限)[删除集合也从 MongoDB 回收空间]。

使用collStats命令,您可以检查可以从 MongoDB 回收多少空间

于 2020-01-31T09:28:42.977 回答
1

有什么办法可以用 Spring Batch 做到这一点,或者我应该创建一个 Dao 并批量删除每个集合的旧数据。

Spring Batch 不提供该 OOTB,因此您需要自己做(例如使用 Spring Batch 作业;-))。我不熟悉您共享的 MongoDB 作业存储库实现(集合定义、它们之间的关系等),但这里有一些有用的链接可能会对您有所帮助:

于 2020-01-31T09:13:08.637 回答