天天看點

Spring data mongodb ObjectId ,根據id日期條件查詢,省略@CreatedDate注解

先看看ObjectId 的json 結構,非常豐富,這裡有唯一機器碼,日期,時間戳等等,是以強烈建議ID 使用 ObjectId 類型,并且自帶索引

Spring data mongodb ObjectId ,根據id日期條件查詢,省略@CreatedDate注解

 Spring data mongodb 注解 @CreatedDate 可以記錄建立時間,但是有了那麼強大的ID ,我們還需要這個嗎?

ObjectId 有一個構造方法

public ObjectId(Date time) {
        this(time, _genmachine, _nextInc.getAndIncrement());
    }      

使用Dto 實體根據建立日期範圍查詢,親測有效

if (order.getCreateEndDate() != null && order.getCreateDate() != null)
            query.addCriteria(where("objectId").gte(new ObjectId(LocalDateTimeUtil.LocalDateTimeToUdate(order.getCreateDate()))).lte(new ObjectId(LocalDateTimeUtil.LocalDateTimeToUdate(order.getCreateEndDate()))));
        else {
            Optional.ofNullable(order.getCreateDate()).ifPresent(createDate -> query.addCriteria(where("objectId").gte(new ObjectId(LocalDateTimeUtil.LocalDateTimeToUdate(createDate)))));
            Optional.ofNullable(order.getCreateEndDate()).ifPresent(endDate -> query.addCriteria(where("objectId").lte(new ObjectId(LocalDateTimeUtil.LocalDateTimeToUdate(endDate)))));
        }      

繼續閱讀