2015-09-24 107 views
2

我有一個蒙戈DB - 春天的數據文檔命名爲存檔與性能iucIdstorageDateTime。現在我將查詢具有特定iucId的最新存儲的Archive。我不知道如何詢問最新的storageDateTime春數據查詢

詢問iucId很簡單:

List<Archive> findArchiveByIucId(final String iucId); 

但最新storageDateTime紀錄是我的問題。

任何人都可以幫我解決這個問題嗎? 非常感謝您的幫助!

@Document(collection = "Archive") 
public class Archive { 

    @Id 
    private String id; 
    private String iucId 
    private DateTime storageDateTime; 

回答

0

您可以使用

Optional<Archive> findFirstByIucIdOrderByStorageDateTimeDesc(final String iucId); 

更多here

+1

在當前春季數據版本,而不是'Archive'它可能會更好地使用'可選'。這提供了一個機會來操作可選的(從而使用Java 8功能)而不是執行空檢查。 – luke

+1

好點,@luke。我正在更新我的答案。 – ericbn

0

以下MongoDB的查詢將返回最新的存儲歸檔與特定iucId:

//The '-1' = sort descending (newest to oldest) 
db.archive.find({iucId: "zzz"}).sort({storageDateTime: -1}).limit(1); 

在Spring中的數據,使用:

import org.springframework.data.domain.Sort; 
import org.springframework.data.mongodb.core.query.Criteria; 
import org.springframework.data.mongodb.core.query.Query; 
import org.springframework.data.mongodb.core.query.Update; 

    //... 
    Query query = new Query(); 
    query.addCriteria(Criteria.where("iucId").is("zzz")); 
    query.limit(1); 
    query.with(new Sort(Sort.Direction.DESC, "storageDateTime")); 

    mongoOperation.find(query, Domain.class);