Java 使用Spring REST分页在MongoDB中查询ObjectId的日期范围

Java 使用Spring REST分页在MongoDB中查询ObjectId的日期范围,java,spring,mongodb,rest,pagination,Java,Spring,Mongodb,Rest,Pagination,我需要在users集合中执行日期范围查询。但是,它没有日期字段。我找到了一些有用的资源,可以先将时间转换为ObjectId,然后在Mongodb shell中查询: >var idMin = ObjectId(Math.floor((new Date('2018/1/1'))/1000).toString(16) + "0000000000000000") >var idMax = ObjectId(Math.floor((new Date('2018/2/1'))/1000).to

我需要在users集合中执行日期范围查询。但是,它没有日期字段。我找到了一些有用的资源,可以先将时间转换为ObjectId,然后在Mongodb shell中查询:

>var idMin = ObjectId(Math.floor((new Date('2018/1/1'))/1000).toString(16) + "0000000000000000")
>var idMax = ObjectId(Math.floor((new Date('2018/2/1'))/1000).toString(16) + "0000000000000000")
>db.users.find({_id:{$gt: idMin, $lt: idMax}})
我的项目将在前端获取时间范围,将其转换为ObjectId字符串(idMin,idMax),然后向SpringRESTAPI发出请求以获取数据。如何使用带pageable的Spring实现查询?spring mongodb库中有ObjectId类吗

User.java:

@Document(collection = "users")
    public class User {

    @Id
    private String id;

    private String name;

    private int age;
}
UserRepository.java

@RequestMapping(path = "/users/{idMin}/{idMax}", method = RequestMethod.GET)
public interface UserRepository extends MongoRepository<User, String> {

    Page<User> findAll(Pageable pageable);

    //TODO: query on id range {idMin, idMax}
}
@RequestMapping(path=“/users/{idMin}/{idMax}”,method=RequestMethod.GET)
公共接口UserRepository扩展了MongoRepository{
页面findAll(可分页可分页);
//TODO:查询id范围{idMin,idMax}
}

您可以尝试以下方法

呼叫代码:

ObjectId idMin = new ObjectId(new Date("2018/1/1"));
ObjectId idMax = new ObjectId(new Date("2018/2/1"));
Pageable pages = new PageRequest(1, 2);

Page<User> results = repository.findByObjectIdsAndPages(idMin, idMax, pages);
ObjectId idMin=新ObjectId(新日期(“2018/1/1”);
ObjectId idMax=新ObjectId(新日期(“2018/2/1”);
可分页页面=新页面请求(1,2);
页面结果=repository.findByObjectIdsAndPages(idMin、idMax、pages);
存储库

 @Query("{_id:{$gt: ?0, $lt: ?1}}")
 Page<User> findByObjectIdsAndPages(ObjectId idMin, ObjectId idMax, Pageable pages);
@Query({u id:{$gt:-0,$lt:-1}})
PageFindByObjectId和pages(ObjectId最小值、ObjectId最大值、可分页页面);

您可以尝试以下方法

呼叫代码:

ObjectId idMin = new ObjectId(new Date("2018/1/1"));
ObjectId idMax = new ObjectId(new Date("2018/2/1"));
Pageable pages = new PageRequest(1, 2);

Page<User> results = repository.findByObjectIdsAndPages(idMin, idMax, pages);
ObjectId idMin=新ObjectId(新日期(“2018/1/1”);
ObjectId idMax=新ObjectId(新日期(“2018/2/1”);
可分页页面=新页面请求(1,2);
页面结果=repository.findByObjectIdsAndPages(idMin、idMax、pages);
存储库

 @Query("{_id:{$gt: ?0, $lt: ?1}}")
 Page<User> findByObjectIdsAndPages(ObjectId idMin, ObjectId idMax, Pageable pages);
@Query({u id:{$gt:-0,$lt:-1}})
PageFindByObjectId和pages(ObjectId最小值、ObjectId最大值、可分页页面);

我将试一试。如何导入ObjectId?它在mongodb bson包中。试试org.bson.types.objecti会试试的。如何导入ObjectId?它在mongodb bson包中。请尝试org.bson.types.ObjectId