2013-08-29 17 views
22

Jestem całkiem nowy na mongodb i podczas gdy próbuję wykonać zlecone zapytanie mongodb. Ale metoda sortowania danych źródłowych mongodb jest przestarzała. Więc użyłem org.springframework.data.domain.SortWiosenne sortowanie zapytań MongoDB

Query query = new Query(); 
query.with(new Sort(Sort.Direction.ASC,"pdate")); 
return mongoTemplate.find(query, Product.class); 

Użyłem tego bloku kodu. Ale nie sortuje danych. Więc czy wolisz używać jakiejś użytecznej metody do tej praktyki?

+0

Twój kod wygląda poprawnie, można opracować jak wpadłeś do zawarcia „jej nie sortowania danych” – gerrytan

+2

nie są one zamówiona data rosnąco na stronie –

Odpowiedz

18

Można zdefiniować rodzaju w ten sposób, aby ignorować sprawy:

new Sort(new Order(Direction.ASC, FIELD_NAME).ignoreCase() 
+0

dziękuję, to właśnie miałem na myśli lata temu w mojej odpowiedzi, akceptuję twoją odpowiedź. –

+0

Można faktycznie przekazać listę rozdzielaną przecinkami (lub wstępnie skonstruowaną listę) do konstruktora Sortowania i zdefiniować wiele kryteriów zamówienia! – th3morg

+2

To nie działa na mnie, z najnowszym MongoDb, dziwne ... Mam wyjątek z Mongo i kod w ten sposób ... java.lang.IllegalArgumentException: Given sort zawierał Order for username with ignore case! MongoDB nie obsługuje obecnie przypadku ignorowania sortowania! –

0

Kod mojego pytania był prawdziwy, teraz widzę, że na polu "pdate" wystąpił problem z camelCase.

3

Możesz użyć agregacji do sortowania danych. Musisz użyć kryteriów dopasowania i grupowania dla zapytania agregacji i rozwinąć swoje pole.

AggregationOperation match = Aggregation.match(matching criteria); 
AggregationOperation group = Aggregation.group("fieldname"); 
AggregationOperation sort = Aggregation.sort(Sort.Direction.ASC, "fieldname"); 
Aggregation aggregation = Aggregation.newAggregation(Aggregation.unwind("fieldname"),match,group,sort); 
Powiązane problemy