Mengurutkan hasil MongoDB menggunakan Spring Boot dengan MongoTemplate
Aug 16 2020
Hasil
Saya ingin mendapatkan pertanyaan ini:
db.getCollection("employees").find().sort({
hire_date: 1
}).limit(10)
ditulis dengan MongoTemplate di Spring Boot.
Penelitian
Saya telah melihat banyak posting dan situs tentang penyortiran seperti misalnya
- https://www.baeldung.com/java-mongodb-aggregations
- Spring + MongoDB - MongoTemplate + Query Kriteria
- Penyortiran kueri MongoDB musim semi
Percobaan
Saya sudah mencoba banyak cara tetapi saya masih tidak tahu bagaimana saya bisa melakukan ini. Beberapa hal yang saya coba tercantum di bawah ini:
@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...
}
}
Solusinya mungkin cukup sederhana, saya kira, seperti kueri itu sendiri, tetapi ini adalah langkah pertama saya di lapangan semacam itu. Terima kasih sebelumnya atas bantuan apa pun yang satu ini.
Jawaban
1 varman Aug 17 2020 at 00:22
Coba ini,
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 Aug 17 2020 at 00:23
Anda dapat melakukan seperti di bawah ini.
- Anda membutuhkan bagian kueri
//As you need to match all
Query query = new Query()
- Anda perlu menambahkan opsi pengurutan
//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"));
- Anda perlu menambahkan opsi pagination
final Pageable pageableRequest = PageRequest.of(0, 10);
query.with(pageableRequest);
- Anda perlu menambahkan model
mongoTemplate(query, Employee.class)
Referensi sampel
Jawaban bermanfaat lainnya
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'