【问题标题】:Remove all documents of a collection at specific time in MongoDB在 MongoDB 中的特定时间删除集合的所有文档
【发布时间】:2021-02-19 06:07:05
【问题描述】:

目标是在每天插入第一个新文档时删除集合中的所有旧文档。所以馆藏只保留日常文件,丢弃旧文件。

这里的关键部分是集合需要保留旧文档直到那天the first new document。也有可能几天都不会插入文档,所以应该保留旧的。

一种可能的解决方案是使用 prepost save middleware,并将当前日期与每次插入的最新文档创建日期进行比较。但我认为这工作量太大,可能有更高效、更好的方法来做到这一点。

任何建议将不胜感激。

【问题讨论】:

  • 清晰:因此,如果我有 3 个 2020-11-05 的文档,则在 2020-11-05 之后插入的第一个文档(可能是 2020-11-06,07 等)将删除这三个?
  • @BuzzMoschetti,是的

标签: node.js database mongodb express mongoose


【解决方案1】:

MongoDB 唯一需要删除的文档是 TTL(生存时间),它是一种 MongoDB 索引 Here

但特别是关于你的情况,没有你提到的其他方法。 Pre savemongoose中可以使用的函数。

【讨论】:

    【解决方案2】:

    这主要归结为这一点。

    var targ = new Date(the new date);
    // start TX                                                                      
    if(null != db.foo.findOne({d: {$lt:targ}})) {  // look for at least one older...
        db.foo.remove({d: {$lt:targ}}); // ...and remove them all
    }
    db.foo.insert(newDoc); // insert in any case
    // commit                                                                        
    
    

    【讨论】:

      猜你喜欢
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2021-06-19
      • 2020-10-02
      • 2020-09-08
      相关资源
      最近更新 更多