MongoDB에서 특정 필드 값 정렬하기
MongoDB에서 문서를 정렬하려면 sort() 메서드를 사용합니다. sort()는 필드 이름과 정렬 방향을 지정하는 객체를 인자로 받으며, 1은 오름차순(ascending), -1은 내림차순(descending)을 의미합니다.
먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.
> db.demo365.insertOne({"FirstName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d5b6d0ada61456dc936f")
}
> db.demo365.insertOne({"FirstName":"Adam"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d5bad0ada61456dc9370")
}
> db.demo365.insertOne({"FirstName":"John"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d5bed0ada61456dc9371")
}
> db.demo365.insertOne({"FirstName":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d5c0d0ada61456dc9372")
}삽입된 문서 확인하기
find() 메서드를 사용하여 컬렉션의 모든 문서를 조회합니다.
> db.demo365.find();
위 쿼리는 다음과 같은 결과를 출력합니다.
{ "_id" : ObjectId("5e57d5b6d0ada61456dc936f"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e57d5bad0ada61456dc9370"), "FirstName" : "Adam" }
{ "_id" : ObjectId("5e57d5bed0ada61456dc9371"), "FirstName" : "John" }
{ "_id" : ObjectId("5e57d5c0d0ada61456dc9372"), "FirstName" : "Bob" }현재 문서들은 삽입된 순서대로 출력되고 있음을 확인할 수 있습니다.
FirstName 필드로 오름차순 정렬하기
이제 FirstName 필드 값을 기준으로 문서를 정렬하는 쿼리는 다음과 같습니다.
> db.demo365.find().sort({"FirstName":1});위 쿼리를 실행하면 다음과 같이 알파벳 순서(A→Z)로 정렬된 결과가 출력됩니다.
{ "_id" : ObjectId("5e57d5bad0ada61456dc9370"), "FirstName" : "Adam" }
{ "_id" : ObjectId("5e57d5c0d0ada61456dc9372"), "FirstName" : "Bob" }
{ "_id" : ObjectId("5e57d5b6d0ada61456dc936f"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e57d5bed0ada61456dc9371"), "FirstName" : "John" }내림차순으로 정렬하려면?
반대로 Z→A 순서로 정렬하고 싶다면 sort()에 -1을 전달하면 됩니다.
> db.demo365.find().sort({"FirstName":-1});이처럼 MongoDB의 sort() 메서드를 활용하면 원하는 필드를 기준으로 손쉽게 오름차순 또는 내림차순 정렬을 수행할 수 있습니다. 참고로 대량의 데이터에서 자주 사용하는 정렬 필드라면 인덱스를 생성해 두는 것이 쿼리 성능 향상에 큰 도움이 됩니다.