面试题答案
一键面试- 策略:
- 首先,确定30天前的时间戳。
- 然后,使用该时间戳作为过滤条件,查询出所有创建时间早于30天前的文档。
- 最后,删除这些查询出来的文档。
- 相关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 }
});
在副本集中执行此操作时,要注意操作的一致性和可能对副本集同步产生的影响。确保在主节点上执行删除操作,副本集会自动同步这些更改。同时,建议在业务低峰期执行此操作,以减少对业务的影响。