• mongo数据库时间存储的问题


    题记:项目中要加的内容,可以实现对设备的预定,被某个用户预定后的设备就不能再被其他用户所使用了,用户预定的时候就需要输入预定时间,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) {  

    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"; }

    例如,如下操作在 log_events 集合的 createdAt 字段创建了一个索引并指定 expireAfterSeconds 的值 0

  • 相关阅读:
    POJ 1611 The Suspects
    POJ 2001 Shortest Prefixes(字典树)
    HDU 1251 统计难题(字典树 裸题 链表做法)
    G++ C++之区别
    PAT 乙级 1013. 数素数 (20)
    PAT 乙级 1012. 数字分类 (20)
    PAT 乙级 1009. 说反话 (20)
    PAT 乙级 1008. 数组元素循环右移问题 (20)
    HDU 6063 17多校3 RXD and math(暴力打表题)
    HDU 6066 17多校3 RXD's date(超水题)
  • 原文地址:https://www.cnblogs.com/peizhe123/p/6212950.html
Copyright © 2020-2023  润新知