MongoDB에서 쿼리가 일치하는 문서를 반환하는 순서를 지정하려면 cursor.sort() 메서드를 사용합니다. 여기서 커서(cursor)란 db.collectionName.find()가 반환하는 결과 집합을 의미합니다.
컬렉션 생성 및 문서 삽입
먼저 다음과 같이 컬렉션을 생성하고 문서를 삽입해 보겠습니다.
> db.demo259.insertOne({"Subject":"MySQL"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e47ae1f1627c0c63e7dba98")
}
> db.demo259.insertOne({"Subject":"Java"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e47ae231627c0c63e7dba99")
}
> db.demo259.insertOne({"Subject":"MongoDB"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e47ae281627c0c63e7dba9a")
}find()로 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.
> db.demo259.find();
위 쿼리는 다음과 같은 출력을 생성합니다.
{ "_id" : ObjectId("5e47ae1f1627c0c63e7dba98"), "Subject" : "MySQL" }
{ "_id" : ObjectId("5e47ae231627c0c63e7dba99"), "Subject" : "Java" }
{ "_id" : ObjectId("5e47ae281627c0c63e7dba9a"), "Subject" : "MongoDB" }sort()로 특정 순서 지정하기
특정 필드를 기준으로 정렬 순서를 지정하려면 sort() 메서드에 정렬 조건을 객체 형태로 전달합니다. 값으로 1을 사용하면 오름차순(ascending), -1을 사용하면 내림차순(descending)으로 정렬됩니다.
다음은 Subject 필드를 기준으로 오름차순 정렬하는 쿼리입니다.
> db.demo259.find().sort({"Subject":1});위 쿼리는 다음과 같은 출력을 생성합니다.
{ "_id" : ObjectId("5e47ae231627c0c63e7dba99"), "Subject" : "Java" }
{ "_id" : ObjectId("5e47ae281627c0c63e7dba9a"), "Subject" : "MongoDB" }
{ "_id" : ObjectId("5e47ae1f1627c0c63e7dba98"), "Subject" : "MySQL" }출력 결과를 보면 문서가 Java → MongoDB → MySQL 순서, 즉 알파벳 오름차순으로 정렬되어 반환된 것을 확인할 수 있습니다. 이처럼 sort()를 활용하면 MongoDB에서 쿼리 결과의 반환 순서를 손쉽게 제어할 수 있습니다.