首页 > 解决方案 > 在特定日期删除文档 - mongoose

问题描述

基本上我正在做一个需要在特定日期删除一些文档的项目。这是关于会员资格的。当会员资格到期时,我希望删除该文档。但是,我还想看看以后删除了哪些文档。(保留该文档的对象 ID)。下面我membership.model.js在我的代码中展示了。

    membershipId: Number,
    startTime: Date, // Starting date and time of the membership
    endTime: Date, //Expiring date of the membership
    fees: Number,
    _active: Boolean, //membership active or not
    memberType: String

所以基本上我想删除这个文件endtime。我试过这个

schema.index({ expire_at: endTime }, { expireAfterSeconds: 0 });

但是在很晚的时候,我无法使用上述方式检查删除了哪些文档。如果我可以将此_active变量放在该文档的false 后面会更好endTime(但不会从数据库中永久删除该文档)。有没有办法做到这一点?

标签: javascriptnode.jsmongodbmongoosettl

解决方案


TTL 是为过期而不是存档而设计的,它按照它所说的诚实行事。

您可以制定一个逻辑并将其用作解决方案:这里

就像文档说的那样,

不要将应用程序逻辑存储在数据库中。在 MongoDB 中运行 JavaScript 存在性能限制。当应用程序代码与应用程序本身共享版本控制时,它通常也是最有效的。

我建议只需编写一个 CRON 作业并使用$merge不时将内容移动到另一个集合。


推荐阅读