Javascript Node.js中的时间敏感数据
我正在Javascript Node.js中的时间敏感数据,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在Node.js和MongoDB中构建一个应用程序,该应用程序具有时间有效数据,这意味着如果将某个数据插入到数据库中 我想在三天后(或任意天数/时间间隔)将其从数据库中删除(通过代码) 目前,我的解决方案是在我的模式中有某种成员,检查它何时实际发布,然后在插入后的3天内删除它,但我很难找到用代码编写它的好方法 有没有标准的方法来完成这样的事情?有两种基本的方法可以通过TTL索引来完成。TTL索引将允许您在BSON Date字段上定义一种特殊类型的索引,该索引将根据年龄自动删除文档。首先,您需
Node.js
和MongoDB
中构建一个应用程序,该应用程序具有时间有效数据
,这意味着如果将某个数据插入到数据库中
我想在三天后(或任意天数/时间间隔)将其从数据库中删除(通过代码)
目前,我的解决方案是在我的模式中有某种成员,检查它何时实际发布,然后在插入后的3天内删除它,但我很难找到用代码编写它的好方法
有没有标准的方法来完成这样的事情?有两种基本的方法可以通过TTL索引来完成。TTL索引将允许您在BSON Date字段上定义一种特殊类型的索引,该索引将根据年龄自动删除文档。首先,您需要在文档中有一个BSON Date字段。如果你没有,这就行不通了
然后,您可以在所有文档达到一定期限后删除它们,或者在插入文档时为每个文档设置过期日期
对于第一种情况,假设您想在1小时后删除文档,您将创建以下索引:
db.mycollection.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )
假设您有一个日期类型的createdAt字段。MongoDB将负责删除集合中的所有文档,一旦它们达到3600秒(或1小时)的时间
对于第二种情况,您将在另一个字段上创建一个expireAfterSeconds设置为0的索引:
db.mycollection.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
如果随后插入的文档的expireAt字段设置为日期,mongoDB将在该日期和时间删除该文档:
db.mycollection.insert( {
"expireAt": new Date('June 6, 2014 13:52:00'),
"mydata": "data"
} )
您可以在此处阅读有关如何使用TTL索引的更多详细信息:
MongoDB有一个。比编写额外作业更好的本机解决方案。