【问题标题】:Custom Expire a document in mongodb自定义过期 mongodb 中的文档
【发布时间】:2022-01-27 15:24:50
【问题描述】:

我想使 mongodb 中的文档过期我发现如果它们的架构中有类似的内容,文档可能会过期并从数据库中删除:

{
name: string,
createdAt:{ type: Date,           
            expires: '1d', 
            default: Date.now() 
}
}

1d 表示所有文档将在一天内到期, 我希望文件有不同的有效期, 如果我的正文是

,我如何从 POST 请求正文中获取此值
{ 'name': 'pius', 'expiry': '3d'}

并将我的架构更改为

{
name: string,
createdAt:{ type: Date,           
            expires: string, 
            default: Date.now() 
}
}

如果可以,我可以通过请求传递 expires 字符串值吗

【问题讨论】:

    标签: node.js mongodb api rest mongoose


    【解决方案1】:

    TTL 索引是特殊的单字段索引,MongoDB 可以使用它在一定时间或特定时钟时间后自动从集合中删除文档。数据过期对于某些类型的信息非常有用,例如机器生成的事件数据、日志和会话信息,这些信息只需要在数据库中保留有限的时间。

    db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
    

    您可以查看this链接了解更多详情。

    【讨论】:

    • 我正在使用 express 我希望用户能够在发布请求正文中指定 expireAfterSeconds 值,以便文档对不同用户具有不同的到期时间,而不是 3600 秒
    【解决方案2】:

    使用框架或原生 nodejs http 模块。解析请求并在 JSON 中转换(或转换)它的主体。访问de属性,调用mongodb的insert操作。在这种情况下,文件将在请求中指定的日期到期。

    请参阅 express req.body 文档和 router declaration 以获取更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      相关资源
      最近更新 更多