2015-09-24 5 views
2

У меня есть Монго DB - Spring Data Document по имени Архив со свойствами iucId и storageDateTime. Теперь я буду запрашивать последний сохраненный Архив с конкретным iucId. Я понятия не имею, как спросить о последних storageDateTime.Spring Data

Задать вопрос 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

В текущей версии Spring Data вместо 'Archive' него может быть лучше использовать 'Необязательный '. Это дает возможность работать с дополнительными (и, следовательно, с использованием функций Java 8) вместо выполнения nullchecks. – 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);