java生成mongo的ObjectId,用於清理主鍵爲ObjectId的mongo表

package com.comisys.lanxin.open.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class mongoCleanUtil {

    /**
     * 1、獲取到ObjectId
     * 2、在服務器mongo命令窗口進入庫
     * 3、執行以下操作清除,ISODate和ObjectId替換爲自己所需要的,目前保留6個月或3個月
        db.fs.files.remove({uploadDate:{ "$lt" : ISODate("2019-2-31T00:00:00Z") }})
        db.fs.chunks.remove({'_id':{'$lte':ObjectId("5c28eb800000000000000000")}})
     * @param args
     */
    public static  void main(String[] args){
        try {
            String date = "2019-03-01 23:00:00";
            System.out.println(dateToObjectId(date));

        }catch (Exception e){
            e.printStackTrace();
        }

    }

    /**
     * 將時間轉化成mongo的objectId
     * @param dateStr
     * @return
     * @throws ParseException
     */
    private static String dateToObjectId(String dateStr) throws  ParseException {
        StringBuffer objectId = new StringBuffer("");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(dateStr);
        //轉換爲16進制的字符串
        objectId.append(Long.toHexString(date.getTime() / 1000));
        //bson-3.6.4.jar 版本校驗ObjectId的長度爲24位,不足24位補0
        while(objectId.length() < 24) {
            objectId.append("0");
        }
        return objectId.toString();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章