2016-08-06 8 views
2

我有boolean字段名为pending in Mongoengine model in Python。我希望只有在pending=True之后的1小时后才能删除文档。如果我无条件地在1小时后删除文档,我只需设置到期索引。有没有一些聪明和简单的方法来添加一些条件检查过期索引?根据条件在mongoDB中有效到期

预先感谢您!

回答

1

恐怕不能直接添加一些定制逻辑来定期清理过期的文档,但如docs中所述,您可以使用过期索引,并且只设置来自应用程序的索引字段,如果pending = True - 作为文档没有过期索引字段不会被删除这应该工作,虽然不完全是你所要求的。

+0

在我的情况下,我将需要最初设置过期索引(因为pending在开始时为True)。当我设置pending = False时,我应该删除索引。我不知道如何用Mongoengine来实现这一点。没有remove_index()函数,如果我从_meta字典中删除条目,它将删除整个集合,而不仅仅是文档。我有想法将挂起设置为空而不是假,我猜索引不工作null。你有什么建议? – giliev

+0

那么你可以将null设置为过期索引所基于的字段,只要您将待处理更改为False。如果您稍后需要在将“待处理”更改为True时恢复该值,那么您可能需要引入一个附加字段,以便您拥有2个日期字段 - 一个保存日期,另一个保存日期只有等待时=真。在这种情况下,到期指数将基于当然的第二个领域。希望是有道理的:) – DAXaholic

+0

有没有什么情况下待处理会再次回到真,所以我想一个索引就足够了。非常感谢你! :) – giliev