2013-08-29 28 views
22

Sono abbastanza nuovo su mongodb, e mentre sto cercando di fare query mongodb ordinato. Ma i dati primaverili del metodo di ordinamento di mongodb sono deprecati. Quindi ho usato org.springframework.data.domain.SortSpring ordinamento query MongoDB

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

Ho usato questo blocco di codice. Ma non sta smistando i dati. Quindi, puoi preferire utilizzare qualsiasi metodo utile per questa pratica?

+0

il codice sia corretto, si può elaborare come sei arrivato in conclusione "la sua non è l'ordinamento dei dati" – gerrytan

+2

non lo sono data ordinata crescente sulla pagina –

risposta

18

È possibile definire l'ordinamento in questo modo per ignorare caso:

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

grazie, era quello che intendo anni fa nella mia risposta, sto accettando la tua risposta. –

+0

È possibile passare effettivamente un elenco delimitato da virgole (o Elenco precostruito) al costruttore Sort e definire più criteri di ordinazione! – th3morg

+2

Non funziona con me, con il nuovo MongoDb, strano ... Ho un'eccezione con Mongo e codice simile ... java.lang.IllegalArgumentException: l'ordinamento Dato conteneva un Ordine per nome utente con caso ignorato! MongoDB non supporta attualmente l'ordinamento di ignorare il caso! –

0

Il codice della mia domanda era vero, ora capisco, c'era un problema di camelCase sul campo 'pdate'.

3

È possibile utilizzare l'aggregazione per l'ordinamento dei dati. Devi utilizzare criteri di corrispondenza e raggruppamento per la query di aggregazione e svolgere il tuo campo.

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