Spring data mongodb ObjectId ,根据id日期条件查询,省略@CreatedDate注解
先看看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))))); }