簡體   English   中英

使用Spring REST分頁在MongoDB中對ObjectId進行日期范圍查詢

[英]Date range query on ObjectId in MongoDB using Spring REST pagination

我需要在用戶集合中進行日期范圍查詢。 但是,它沒有日期字段。 我發現了一些有用的資源,可以先將時間轉換為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),然后向Spring REST API發出請求以獲取數據。 如何使用Spring和pageable實現查詢? 春季mongodb lib中是否有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}
}

您可以嘗試類似

呼叫代碼:

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);

知識庫

 @Query("{_id:{$gt: ?0, $lt: ?1}}")
 Page<User> findByObjectIdsAndPages(ObjectId idMin, ObjectId idMax, Pageable pages);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM