MongoTemplate के साथ स्प्रिंग बूट का उपयोग करके MongoDB परिणामों को क्रमबद्ध करना

Aug 16 2020

लक्ष्य

मुझे यह प्रश्न करना है:

db.getCollection("employees").find().sort({
  hire_date: 1
}).limit(10)

स्प्रिंग बूट में MongoTemplate के साथ लिखा गया है।

शोध

मैंने कई पोस्ट और साइटों को देखा है जैसे कि छँटाई

  • https://www.baeldung.com/java-mongodb-aggregations
  • स्प्रिंग + मोंगोबीडी - मोंगोटेमप्लेट + मानदंड क्वेरी
  • स्प्रिंग MongoDB क्वेरी छँटाई

प्रयास

मैंने कई तरह की कोशिश की है, लेकिन मैं अभी भी यह पता नहीं लगा सकता कि मैंने यह कैसे किया है। मैंने जिन चीज़ों की कोशिश की उनमें से कुछ नीचे सूचीबद्ध हैं:

@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...
    }
}

समाधान बहुत सरल हो सकता है मुझे लगता है, केवल क्वेरी की तरह, लेकिन ये उस तरह के ग्राउंड पर मेरा पहला कदम है। इस एक पर किसी भी मदद के लिए अग्रिम धन्यवाद।

जवाब

1 varman Aug 17 2020 at 00:22

इसे इस्तेमाल करे,

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

आप नीचे के रूप में कर सकते हैं।

  1. आपको एक क्वेरी भाग की आवश्यकता है
//As you need to match all
Query query = new Query()
  1. आपको सॉर्टिंग विकल्प जोड़ना होगा
//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"));
  1. आपको पृष्ठांकन विकल्प जोड़ने की आवश्यकता है
final Pageable pageableRequest = PageRequest.of(0, 10);
query.with(pageableRequest);
  1. आपको एक मॉडल जोड़ने की आवश्यकता है
mongoTemplate(query, Employee.class)

नमूना देखें

एक और उपयोगी जवाब