Я хочу отсортировать результаты find
, используя запрос mongo JSON и, прочитав и экспериментировав, я все еще не могу заставить его работать. Я получил PagingAndSortingRepository и могу использовать Sort()
на findAll без проблем.
Класс репозитория
public interface ThingRepository extends PagingAndSortingRepository<Thing, ObjectId> {
@org.springframework.data.mongodb.repository.Query("{ name:?0, $or : [ { state:'new' } , {state:'updated'} ] }")
List<Device> findThingsInNewOrUpdatedState(String name);
}
Сервисный уровень
@Service
public class ThingService() {
@Autowired private ThingRepository thingRepository;
public List<Thing> getSortedThings() {
return (List<Thing>)thingRepository.findAll(new Sort(Sort.Direction.DESC, Arrays.asList("dateModified")));
}
public List<Thing> getNewOrUpdatedThingsSorted() {
return thingRepository.findThingsInNewOrUpdatedState(); // <-- this needs to be sorted
}
}
Запрос переводится прямо в вызов mongoDb, который отлично работает
db.things.find({ name:'xxx', $or : [ { state:'new' }, {state:'updated'} ] })
и я знаю, что могу добавить sort()
в обычном синтаксисе mongoDb, но не могу понять, как это сделать из Java / Spring Data. Он попытался добавить его в @Query, но он не работал, так как я думаю, что Spring просто выполняет find()
.