当前位置: 首页 > 知识库问答 >
问题:

Mongoose在时间之后将插入的查询删除到集合中

太叔乐家
2023-03-14

我有一个mongoose模式,看起来如下所示:

const USERS_DATA = new Schema({
    _id: Number,
    name: String,
    img: String,
    date: Date,
    phone: String,
    article: String,
    createdAt: {
        type: Date,
        required: true,
        default: Date.now,
        index: { expires: '3d' }
      }
},
{ 
    collection: "users",
    _id: false,
}

);

我需要将数据推送到这个架构

const User = mongoose.model("users", USERS_DATA);
function pushToDB() {
    const newUser = new User({
      name: INPUT.name,
      img: INPUT.img,
      date: INPUT.date,
      phone: INPUT.phone,
      article: INPUT.article,
    });
    newUser.save(function (err) {
       mongoose.disconnect();
       if (err) return console.log(err);
});

}

此数据推送到数据库后3天必须删除。如何在Node.js中实现?我发现它真的很混乱,试了很多代码。如有任何回答,我们将不胜感激!谢谢

附注。我使用mongoDb图集

共有1个答案

钱星辰
2023-03-14

您应该将将数据推入数据库的过程与在3天后将其删除的过程分开。您已经有了第一部分:)。对于第二部分,您可以编写一个函数deleteolddocument。该函数将查询DB中创建时间为3天或更长的文档,并将其删除。然后,您可以定期运行该函数,例如每天运行一次。

伪代码,以备您需要:

async function deleteOldDocument() {

    const 3DaysAgo = ...; // here you can subtract 3 days from now to obtain the value
  
    // search for documents that are created from 3 days or more, using $lt operator
    const documentToDelete = await User.find({"created_at" : {$lt : 3DaysAgo }});

   // delete documents from database
   .....

   // recall the function after 1 days, you can change the frequence
   setTimeOut(async function() {
       await deleteOldDocument();
   }), 86400);    
}

// call deleteOldDocument to start the loop
deleteOldDocument();

 类似资料:
  • 问题内容: 我与CohortGroup和Employee有很多关系。每当我将Employee插入CohortGroup时,hibernate都会从解析表中删除该组,然后再次插入所有成员以及新成员。为什么不只是添加新的呢? 组中的注释: 员工的另一边 代码嗅探 下面是日志中报告的SQL 这种接缝的效率很低,并且会引起一些问题。如果有人提出要求将雇员添加到组中,则有些人将其改写。 诸如equals和h

  • 问题内容: 我与CohortGroup和Employee有很多关系。每当我将Employee插入CohortGroup时,冬眠都会从解析表中删除该组,然后再次插入所有成员,再加上新成员。为什么不只是添加新的呢? 组中的注释: 员工的另一边 代码嗅探 下面是日志中报告的SQL 这种接缝的效率很低,并且会引起一些问题。如果有人提出将某员工添加到该组的要求,那么有些人将被改写。 诸如equals和has

  • 问题内容: 我的表包含一个名为datetime的列,其中包含日期和时间为 我要删除一个小时的行。请提出一些查询。 这就是我尝试过的。 问题答案: 使用:

  • 当使用Firebase控制台时,可以看到所有文档和集合,甚至是路径中包含不存在的“文档”的子集合。 有没有可能,以某种方式,列出这些文件。既然控制台能做到,看来肯定有办法。如果有可能找到这些文档,是否可以创建一个查询来获取所有不存在但仅限于具有嵌套子集合的文档?(因为所有不存在的文档集将是无限的)

  • 问题内容: 给定一个预定义的Keras模型,我试图首先加载预先训练的权重,然后从内部(非最后几个)模型中删除一到三个模型,然后将其替换为另一层。 我似乎在keras.io上找不到任何有关做这种事情或从预定义模型中删除图层的文档。 我使用的模型是一个良好的ole VGG-16网络,该网络通过如下所示的函数实例化: 例如,在将原始权重加载到所有其他层之后,我想在第1块中使用两个Conv层,并仅用一个C

  • 我在更新和插入查询之间的应用程序中遇到了死锁,我无法理解为什么以导致死锁的方式给出锁。 null 插入- null