MongoDB sonuçlarını MongoTemplate ile Spring Boot kullanarak sıralama
Amaç
Bu sorguyu almak istiyorum:
db.getCollection("employees").find().sort({
hire_date: 1
}).limit(10)
Spring Boot'ta MongoTemplate ile yazılmıştır.
Araştırma
Örneğin, sıralama ile ilgili birçok gönderi ve site gördüm.
- https://www.baeldung.com/java-mongodb-aggregations
- Spring + MongoDB - MongoTemplate + Criteria Sorgusu
- Bahar MongoDB sorgu sıralaması
Denemeler
Pek çok yol denedim ama bunu nasıl yaptırabileceğimi hala çözemiyorum. Denediğim şeylerden bazıları aşağıda listelenmiştir:
@Service
public class MongoService {
@Autowired
private MongoTemplate mongoTemplate;
public Document simpleQuery() {
// 1st
mongoTemplate.aggregate(Arrays.asList(
sort(Sorts.ascending("hire_date")),
limit(10)
));
// 2nd
mongoTemplate.findAll(Employee.class).sort(new BasicDBObject("hire_date", 1));
// 3rd
mongoTemplate.findAll(Employee.class).sort((o1, o2) -> o1.getHire_date() > o2.getHire_date());
// and more...
}
}
Çözüm sanırım oldukça basit olabilir, tıpkı sorgunun kendisi gibi, ancak bunlar benim bu tür bir zeminde ilk adımlarım. Bu konuda herhangi bir yardım için şimdiden teşekkür ederim.
Yanıtlar
1 varman
Bunu dene,
Aggregation aggregation = Aggregation.newAggregation(
sort(Sort.Direction.ASC, "hire_date"),
limit(10)
).withOptions(AggregationOptions.builder().allowDiskUse(Boolean.TRUE).build());
mongoTemplate.aggregate(aggregation, mongoTemplate.getCollectionName(Employee.class), Object.class).getMappedResults();
Gibbs
Aşağıdaki gibi yapabilirsiniz.
- Sorgu kısmına ihtiyacınız var
//As you need to match all
Query query = new Query()
- Sıralama seçeneği eklemeniz gerekiyor
//You need to use Sort class with sorting order, field name to be used for sorting
query.with(new Sort(Sort.Direction.ASC, "hire_date"));
- Sayfalandırma seçeneği eklemeniz gerekiyor
final Pageable pageableRequest = PageRequest.of(0, 10);
query.with(pageableRequest);
- Bir model eklemeniz gerekiyor
mongoTemplate(query, Employee.class)
Örnek başvuru
Başka bir faydalı cevap
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı