Spring data mongodb ObjectId ,根据id日期条件查询,省略@CreatedDate注解

时间:2021-02-16 01:46:20

先看看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)))));
}