先看看ObjectId 的json 結構,非常豐富,這里有唯一機器碼,日期,時間戳等等,所以強烈建議ID 使用 ObjectId 類型,並且自帶索引
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))))); }