Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js中的时间敏感数据_Javascript_Node.js_Mongodb - Fatal编程技术网

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有一个。比编写额外作业更好的本机解决方案。