MST

星途 面试题库

面试题:MongoDB副本集中如何制定简单的过时数据清理策略

假设在MongoDB副本集中,存在大量已过期的业务数据,这些数据的文档中有一个'timestamp'字段记录创建时间,业务需求是保留最近30天的数据,其余过时数据需要清理。请描述你会采用怎样的策略及相关MongoDB命令来完成这个任务。
35.1万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 策略
    • 首先,确定30天前的时间戳。
    • 然后,使用该时间戳作为过滤条件,查询出所有创建时间早于30天前的文档。
    • 最后,删除这些查询出来的文档。
  2. 相关MongoDB命令
    • 在JavaScript环境下(如MongoDB shell),计算30天前的时间戳:
var thirtyDaysAgo = new Date();
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
var timestampToFilter = thirtyDaysAgo.getTime();
  • 删除过期数据,假设集合名为yourCollection
db.yourCollection.deleteMany({
    timestamp: { $lt: timestampToFilter }
});

在副本集中执行此操作时,要注意操作的一致性和可能对副本集同步产生的影响。确保在主节点上执行删除操作,副本集会自动同步这些更改。同时,建议在业务低峰期执行此操作,以减少对业务的影响。