Mongodb 实现数据自动在后台删除--根据一个截止时间
来源:互联网 发布:邓亚萍 20亿 知乎 编辑:程序博客网 时间:2024/05/01 11:32
题记:项目中要加的内容,可以实现对设备的预定,被某个用户预定后的设备就不能再被其他用户所使用了,用户预定的时候就需要输入预定时间,web前端用到了boostrap的date的一个插件,非常好用,接下来就总结下,mongodb数据库实现后台删除的方法。
参考资料:http://docs.mongoing.com/manual/tutorial/expire-data.html
有两种法:
1 使文档在一定的秒数后过期
如下操作在 log_events 集合的 createdAt 字段创建了一个索引并指定 expireAfterSeconds 的值为 3600 以使过期时间为 createdAt 指定的时间之后的一小时。
db.log_events.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )
当向 log_events 集合添加文档时,设置 createdAt 字段为当前时间:
db.log_events.insert( {
"createdAt": new Date(),
"logEvent": 2,
"logMessage": "Success!"
} )
2 使文档在确定的时钟时间过期
如下操作在 log_events 集合的 createdAt 字段创建了一个索引并指定 expireAfterSeconds 的值 0。
对于每个文档,设置 expireAt 的值与文档过期的时间一致。举例来说,如下的 insert() 操作添加了一个将在 2013年7月22号 14:00:00 过期的文档。
db.log_events.insert( {
"expireAt": new Date('July 22, 2013 14:00:00'),
"logEvent": 2,
"logMessage": "Success!"
} )
当某文档的 expireAt 字段的值晚于 expireAfterSeconds``中指定的秒数时——在本例中也就是 ``0 ,MongoDB会自动从 log_events 集合删除该文档。因此,数据在指定的 expireAt 值过期。
此外,用java实现上面的第2个方法,如下所示:
下面的formatDate()这个函数是我自己写一个格式化日期的,因为我在web输入的格式和mongodb要求的格式不同,所以要转成mongodb识别的格式:July 31, 2015 16:00:00
public String addReserve(String reservename, String reserveip,String starttime, String endtime, String reserver) { // TODO Auto-generated method stub //31 July 2015 - 11:00 am BasicDBObject date_index = new BasicDBObject("date",1); BasicDBObject ensure = new BasicDBObject("expireAfterSeconds", 0); collectionReserve.ensureIndex(date_index, ensure); DBObject query1 = new BasicDBObject(); String time1 = formatDate(endtime);//time1:July 31, 2015 16:00:00 query1.put("date",new Date(time1)); query1.put("reservename", reservename); query1.put("reserveip", reserveip); query1.put("starttime", starttime); query1.put("endtime", endtime); query1.put("reserver", reserver); collectionReserve.insert(query1); return "success"; }
- Mongodb 实现数据自动在后台删除--根据一个截止时间
- .NET的GridView在后台删除数据
- wpf 根据DataTable在后台自动创建DataGrid,而且可以对数据进行初步处理,显示差异
- 数据在后台修改 删除 更新 正确代码(共享)
- Android在后台线程实现 定时更新时间
- IOS实现在后台执行一定时间的任务
- 如何在Mongodb中实现数据超时自动删除功能?
- Mongodb--TTL索引(Mongodb自动删除数据)
- mongodb 根据主键id 删除数据
- 动态绘圆根据接收数据实时显示_在后台绘图显示实例
- mongodb实现两台数据库数据同步
- GridView手动在后台增加-删除(1)
- GridView手动在后台增加-删除(2)
- 关于数据在后台的删除修改(代码有错误等待更正 不完全)
- ios应用在后台运行时间讨论
- ios应用在后台运行时间讨论
- MongoDB自动删除过期数据--TTL索引
- mongodb 设置自动删除过期数据
- 【Unity3D ugui】使用艺术字
- Android之Window、WindowManager(一):PopupWindow添加浮动窗口内部过程
- SpringMVC 基于注解的Controller @RequestMapping @RequestParam..
- codeforces 508 E. Arthur and Brackets
- 动态规划-最长递增序列(LIS)【模板】
- Mongodb 实现数据自动在后台删除--根据一个截止时间
- testNG+httpclient接口测试
- lampp 修改MySQL数据库存储路径
- android杂记7:drawable state各个属性详解
- 共同头部+ViewPager+ListView
- QML语法例子:单击MouseArea使Rectangle变换随机的颜色
- C#使用Dotfuscator混淆代码以及加密
- jQuery学习之工具
- EXE和SYS通信(ReadFile WriteFile DO_DIRECT_IO) 直接方式