web-dev-qa-db-fra.com

Tri des requêtes Spring MongoDB

je suis assez nouveau sur mongodb, et tout en essayant de faire une requête ordonnée mongodb. Cependant, la méthode de tri de mongodb est obsolète. J'ai donc utilisé org.springframework.data.domain.Sort

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

J'ai utilisé ce bloc de code. Mais ce n'est pas le tri des données. Alors pouvez-vous préférer utiliser une méthode utile pour cette pratique?

26
İlker Korkut

Vous pouvez définir votre tri de cette manière pour ignorer la casse:

new Sort(new Order(Direction.ASC, FIELD_NAME).ignoreCase()
25
dev

Lorsque vous avez écrit une requête personnalisée dans votre référentiel, vous pouvez effectuer un tri lors de l'appel. Comme,

Repository

@Query("{ 'id' : ?0}")
List<Student> findStudent(String id, Sort sort);

Pendant l'invocation

Sort sort = new Sort(Sort.Direction.ASC, "date")
List<Student> students = studentRepo.findStudent(1, sort);  

J'espère que cette aide! :)

3
imbond

Vous pouvez utiliser l'agrégation pour trier vos données. Vous devez utiliser des critères de correspondance et de regroupement pour la requête d'agrégation et dérouler votre champ.

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);
3
Jijesh Kumar

Le code de ma question était vrai, je vois maintenant qu'il y avait un problème avec camelCase sur le champ 'pdate'.

0
İlker Korkut