在n天后删除MongoDB文档

时间:2017-11-04 02:04:11

标签: mongodb go mgo

我想在3天后删除用户帐户,如果他们不验证他们的电子邮件。由于调度程序效率低下,我正在寻找一种在MongoDB中安排删除的方法。如果用户验证电子邮件,我还需要一种取消它的方法。

我正在使用mgo作为MongoDB的API,我正在运行最新的Go(1.9)。

1 个答案:

答案 0 :(得分:2)

这可以在MongoDB版本3.4中实现

您可以使用mongodb的TTL索引以及partial index expression

尝试在users集合上添加以下索引:

db.users.ensureIndex(
{ created_at:1}, 
{ expireAfterSeconds:259200, 
  partialFilterExpression:{"verified" : false}})

这个TTL索引删除了所有未经过验证的用户,这些用户已经被添加了3天。