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

MongoDB에서 문서를 정렬하고 단일 필드만 표시하는 방법

MongoDB에서 문서를 정렬하려면 sort() 메서드를 사용하면 됩니다. 정렬된 결과 중에서 하나의 필드만 표시하고 싶다면, 해당 필드 값을 1로 설정하여 프로젝션(projection)과 함께 사용할 수 있습니다.

1. 컬렉션 생성 및 문서 삽입

먼저 예제로 사용할 컬렉션에 문서들을 삽입해 보겠습니다.

> db.demo611.insertOne({"Name":"Chris"});{
   "acknowledged" : true, "insertedId" : ObjectId("5e987110f6b89257f5584d83")
}
> db.demo611.insertOne({"Name":"Adam"});{
   "acknowledged" : true, "insertedId" : ObjectId("5e987115f6b89257f5584d84")
}
> db.demo611.insertOne({"Name":"John"});{
   "acknowledged" : true, "insertedId" : ObjectId("5e987118f6b89257f5584d85")
}
> db.demo611.insertOne({"Name":"Bob"});{
   "acknowledged" : true, "insertedId" : ObjectId("5e98711bf6b89257f5584d86")
}

2. find()로 전체 문서 조회하기

find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.

> db.demo611.find();

위 쿼리는 다음과 같은 결과를 출력합니다.

{ "_id" : ObjectId("5e987110f6b89257f5584d83"), "Name" : "Chris" }
{ "_id" : ObjectId("5e987115f6b89257f5584d84"), "Name" : "Adam" }
{ "_id" : ObjectId("5e987118f6b89257f5584d85"), "Name" : "John" }
{ "_id" : ObjectId("5e98711bf6b89257f5584d86"), "Name" : "Bob" }

3. sort()로 문서 정렬하기

문서를 오름차순으로 정렬하려면 필드 값에 1을 지정하고, 내림차순으로 정렬하려면 -1을 지정합니다.

> db.demo611.find().sort({Name:1});

실행 결과 Name 필드 기준으로 오름차순 정렬된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e987115f6b89257f5584d84"), "Name" : "Adam" }
{ "_id" : ObjectId("5e98711bf6b89257f5584d86"), "Name" : "Bob" }
{ "_id" : ObjectId("5e987110f6b89257f5584d83"), "Name" : "Chris" }
{ "_id" : ObjectId("5e987118f6b89257f5584d85"), "Name" : "John" }

4. 정렬 후 단일 필드만 표시하기

정렬된 결과에서 _id를 제외한 특정 필드만 표시하려면 프로젝션 옵션을 함께 사용합니다. 표시할 필드는 1로 지정하고, 숨길 필드(_id)는 0으로 지정하면 됩니다.

> db.demo611.find({}, {"_id":0, "Name":1}).sort({Name:1});

이 쿼리의 실행 결과는 다음과 같습니다.

{ "Name" : "Adam" }
{ "Name" : "Bob" }
{ "Name" : "Chris" }
{ "Name" : "John" }

이처럼 MongoDB에서는 find()의 두 번째 인자로 프로젝션 조건을 넘기고, 뒤에 sort()를 체이닝하여 원하는 필드만 깔끔하게 정렬된 형태로 조회할 수 있습니다.