zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    dvwa-Brute Force
    i春秋 Crypto模块rsa wrtiteup
    栈-函数调用
    Ymodem协议详解
    JAVA 传输post传输长字符、数据编码解码 反序列化字符串
    jquery datatable 全选,反选 参考文档
    java中bimface 在线申请token。模型视角 模型批注处理
    C# Winform 子窗体提交后更新父窗体datagridview数据(事件和委托)
    JAVA 两个时间 相差的 小时,天数,分钟
    JAVA 使用注解lombok@Builder和@Data,primary not found default constructor
  • 原文地址:https://www.cnblogs.com/peizhe123/p/6212950.html
Copyright © 2011-2022 走看看