2013-08-29 18 views
22

Ich bin ziemlich neu auf Mongodb, und während ich versuche, geordnete Mongodb-Abfrage zu machen. Aber die sort-Methode von spring data mongodb ist veraltet. So benutzte ich org.springframework.data.domain.SortSpring MongoDB Abfrage Sortierung

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

Ich benutzte diesen Codeblock. Aber es sortiert nicht die Daten. Kannst du es vorziehen, irgendeine nützliche Methode für diese Praxis zu verwenden?

+0

Ihr Code sieht richtig, können Sie erarbeiten, wie bist du zum Schluss gekommen, „es ist nicht die Datensortierung“ – gerrytan

+2

sind sie nicht Bestelldatum aufsteigend auf der Seite –

Antwort

18

Sie können Ihre Art auf diese Weise definieren Fall zu ignorieren:

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

Danke, das meinte ich vor Jahren in meiner Antwort, ich akzeptiere deine Antwort. –

+0

Sie können eine durch Kommas getrennte Liste (oder vordefinierte Liste) an den Sortierkonstruktor übergeben und mehrere Sortierkriterien definieren! – th3morg

+2

Es funktioniert nicht bei mir, mit dem neuesten MongoDb, seltsam ... Ich habe eine Ausnahme mit Mongo und Code wie folgt ... java.lang.IllegalArgumentException: Gegebene Art enthielt eine Bestellung für Benutzername mit ignorieren Fall! MongoDB unterstützt derzeit nicht die Sortierung, die Fälle ignoriert! –

0

Der Code meiner Frage war wahr, jetzt sehe ich, es gab ein camelCase-Problem im Feld 'pdate'.

3

Sie können die Aggregation zum Sortieren Ihrer Daten verwenden. Sie müssen übereinstimmende und gruppierende Kriterien für die Aggregationsabfrage verwenden und Ihr Feld abwickeln.

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