Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java로 MongoDB 컬렉션 문서 정렬하는 방법: sort() 메서드 완벽 가이드

MongoDB 컬렉션에서 데이터를 조회할 때 sort() 메서드를 사용하면 결과로 반환되는 문서들을 특정 필드를 기준으로 정렬할 수 있습니다.

기본 문법

db.COLLECTION_NAME.find().sort({KEY:1})

KEY 자리에는 정렬 기준으로 사용할 필드 이름을 넣으며, 값이 1이면 오름차순, -1이면 내림차순으로 정렬됩니다.

Java에서의 정렬 방법

Java MongoDB 드라이버 역시 몽고DB 셸과 동일한 이름의 sort() 메서드를 제공합니다. find() 메서드의 실행 결과에 이 메서드를 호출하되, 정렬 방향(오름차순 또는 내림차순)과 정렬 기준이 될 필드 이름을 인자로 전달하면 됩니다.

Java에서는 com.mongodb.client.model.Sorts 클래스가 제공하는 유틸리티 메서드를 활용하는 것이 가장 편리합니다. 예를 들어 age 필드를 기준으로 오름차순 정렬하려면 다음과 같이 작성합니다.

sort(Sorts.ascending("age"));

반대로 내림차순 정렬이 필요하다면 Sorts.descending() 메서드를 사용하면 됩니다.

예제 코드

아래 예제는 students 컬렉션에 다섯 개의 문서를 삽입한 뒤, age 필드를 기준으로 오름차순 정렬하여 전체 문서를 출력하는 완전한 Java 프로그램입니다.

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Sorts;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;

public class SortingRecords {
   public static void main( String args[] ) {
      //MongoDB 클라이언트 생성
      MongoClient mongo = new MongoClient( "localhost" , 27017 );
      //데이터베이스 연결
      MongoDatabase database = mongo.getDatabase("myDatabase");
      //컬렉션 객체 생성
      MongoCollection<Document> collection = database.getCollection("students");
      Document document1 = new Document("name", "Ram").append("age", 26).append("city", "Hyderabad");
      Document document2 = new Document("name", "Robert").append("age", 27).append("city", "Vishakhapatnam");
      Document document3 = new Document("name", "Rhim").append("age", 30).append("city", "Delhi");
      Document document4 = new Document("name", "Radha").append("age", 28).append("city", "Mumbai");
      Document document5 = new Document("name", "Ramani").append("age", 45).append("city", "Pune");
      //생성한 문서 삽입
      List<Document> list = new ArrayList<Document>();
      list.add(document1);
      list.add(document2);
      list.add(document3);
      list.add(document4);
      list.add(document5);
      collection.insertMany(list);
      System.out.println("Documents Inserted");
      //컬렉션 객체 다시 가져오기
      collection = database.getCollection("students");
      //정렬 조건을 적용해 문서 조회
      FindIterable<Document> iterDoc =
      collection.find().sort(Sorts.ascending("age"));
      Iterator it = iterDoc.iterator();
      while (it.hasNext()) {
         System.out.println(it.next());
      }
   }
}

실행 결과

프로그램을 실행하면 다음과 같이 나이(age)가 적은 순서대로 문서가 정렬되어 출력되는 것을 확인할 수 있습니다.

Documents Inserted
Document{{_id=5e88843d5c851b345fce2a33, name=Ram, age=26, city=Hyderabad}}
Document{{_id=5e88843d5c851b345fce2a34, name=Robert, age=27, city=Vishakhapatnam}}
Document{{_id=5e88843d5c851b345fce2a36, name=Radha, age=28, city=Mumbai}}
Document{{_id=5e88843d5c851b345fce2a35, name=Rhim, age=30, city=Delhi}}
Document{{_id=5e88843d5c851b345fce2a37, name=Ramani, age=45, city=Pune}}