Mongodb设置数据过期自动删除

zz/2024/5/23 0:47:27

1.今天要做一个验证码一样的东西,让用户通过校验。

下面这段是设置以createTime为过期时间的索引,意思就是一条数据以其中createTime的字段时间为准,超过该字段时间将这条数据删除。

{expireAfterSeconds:0} 设置为0  时间一到立马删除。

{ expireAfterSeconds: 60*2 } 设置延时秒,以设置的延时秒为准,到时间以设置的延时为基准删除数据。

//在mongodb中设置过期索引 将createTime字段设置为过期时间,删除时间为120秒
db.auth_session.createIndex({ "createTime": 1 }, { expireAfterSeconds: 60*2 })

2.在node.js中操作不了 IOS Date数据格式。且获取到的createTime时间是字符串类型的,导致mongodb根本不识别,就更不要说根据这个时间字段删除了。

3.在Node.js中需要将createTime时间 使用new Date() 处理一下。

var insertStr = {email: ctx.request.body.email,auth_code: util.verificationCode(),createTime: new Date(util.getTime())  //将时间处理一下。转换为Mongodb认识的数据格式。//如 2019-12-20 11:21:10.000 
}

4.Mongodb中成功得到如下数据:

{"_id": ObjectId("5dfc3e5da1c0fc3148a7b1ed"),"email": "15908619974@163.com","auth_code": "43IQK","createTime": ISODate("2019-12-20T03:22:04.000Z")
}

解释一下,我加入的时间是11点钟,加入数据缺少八个小时是正确的。获取的时间会经过 new Date()转换一次,不要惊慌。

举个例子:我要删除2019-12-20 16:50:22.00的数据,那么你插入数据库的正确时间应该为2019-12-20 08:50:22.000

还有这个时间字段查询出来不会是缺少8个小时的数据。而是对应需要删除的时间。

 


http://www.ngui.cc/zz/2543040.html

相关文章

Ubuntu 18.04服务器安装MongoDB

1.导入包管理系统使用的公钥。 wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add - 执行此命令,如果收到的是OK就是正常的。但是,如果收到指示gnupg未安装的错误,则可以: //如果反馈不是OK 则…

Crypto aes-128-cbc加密

1.crypto (node.js) 1.1 加密 var key 2cef781a9c0411eb var str JSON.stringify({ "ip": "192.168.12.1", "mac": "80:3F:5D:0E:04:2B", "wan_ip": "0.0.0.0", "internet"…

Electron: 渲染进程开启子线程 Worker

在Vue中需要使用例外的线程去执行轮询的任务,这里以获取网卡信息为例。 注:这里是在Electron中使用的,可以使用Node.js实例 “child_process”,如果是纯Vue工程无法使用Node实例。 1.创建一个renderer.js文件,放在public静态文…

vue前端遮罩层问题

在Vue的开发中,一旦我们用到对话框,经常出现的问题是对话框被遮罩层挡住,无论是Element-UI dialog还是bootstrap的Modal,如下图所示:造成这个问题的原因是对话框组件的父元素的position有fixed或者relative值&#xff…

字符串常用的14种方法,记得关注收藏

字符串常用的14种方法,记得收藏 1、将字符串转换成char数组 ToCharArray() 2、将char数组转换成字符串 new string(char[]); 3、将字符串转换成小写 ToLower() 4、将字符串转换成大写 ToUpper() 5、比较两个字符串的时候,忽略大小写 S1.Equals(s2,…); 6…

关于数据库的查询(交叉连接,内连接,外连接-左外连接,外连接-右外连接,全连接)

1.交叉连接 select * from 表1 as 别名1 cross join 表2 as 别名2 说明1: 不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的 行数等于两个表行数的乘积 2.内连接 select * from 表1 as 别名1 inner join 表2 as 别名2 …

打开照相机和相册

step1:修改xml文件. <LinearLayoutandroid:orientation"vertical"android:layout_width"match_parent"android:layout_height"match_parent"><Buttonandroid:id"id/take_photo"android:layout_width"match_parent"…

String字符编码格式

String.getBytes();//得到一个操作系统默认的编码格式的字节数组. String.getBytes(“UTF-8”);//根据指定的decode编码返回某字符串在该编码下的 byte数组表示. new String(btye[] b, “UTF-8”);//按照指定的方法编码 2.编码解码 String info1"中";byte[] info2 …

Large Dual Encoders Are Generalizable Retrievers

Large Dual Encoders Are Generalizable Retrievers(arXiv) 原文地址&#xff1a;https://arxiv.org/pdf/2112.07899.pdf Motivation 之前的研究发现&#xff0c;在一个领域上训练的双塔模型通常不能泛化到其他领域的检索任务。一种普遍的看法是双塔模型的bottleneck layer …

EasyExcel保姆级教程(1)

由于博猪所在行业使用到关于Excel导入、导出的功能比较多&#xff0c;本文主要详细介绍一下博猪使用的阿里巴巴的easyExcel&#xff0c;让Excel相关操作没那么多烦恼。 前言 Excel的缺点 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是…