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

MongoDB에서 _id를 제외한 모든 필드 값을 조회하는 방법

MongoDB에서 _id 필드를 제외한 나머지 모든 값을 조회하려면 집계 파이프라인의 $project 연산자를 사용하면 됩니다. $project는 특정 필드의 포함 여부를 지정하고, _id 필드를 숨기며, 새로운 필드를 추가하거나 기존 필드의 값을 변경할 수 있는 강력한 도구입니다.

1. 샘플 컬렉션 생성하기

먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.

> db.demo226.insertOne({"Name":"Chris","Age":21});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3f9be803d395bdc2134738")
}
> db.demo226.insertOne({"Name":"Bob","Age":20});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3f9bf003d395bdc2134739")
}
> db.demo226.insertOne({"Name":"David","Age":22});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3f9bf803d395bdc213473a")
}

2. find() 메서드로 전체 문서 확인하기

find() 메서드를 사용하여 컬렉션의 모든 문서를 출력해 보겠습니다.

> db.demo226.find();

위 쿼리는 다음과 같은 결과를 반환합니다.

{ "_id" : ObjectId("5e3f9be803d395bdc2134738"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e3f9bf003d395bdc2134739"), "Name" : "Bob", "Age" : 20 }
{ "_id" : ObjectId("5e3f9bf803d395bdc213473a"), "Name" : "David", "Age" : 22 }

3. _id를 제외한 값만 조회하기

이제 aggregate()와 함께 $project를 사용하여 _id를 제외한 모든 값을 표시하는 쿼리를 살펴보겠습니다. 아래 예제에서는 _id: false로 설정하여 _id 필드를 숨기고, 동시에 기존 필드명을 새로운 이름으로 변경하는 방법도 함께 확인할 수 있습니다.

> db.demo226.aggregate(
...    {$project:
...       {
...          _id: false,
...          "StudentFirstName":"$Name",
...          "StudentAge":"$Age"
...       }
...    }
...);

실행 결과는 다음과 같습니다.

{ "StudentFirstName" : "Chris", "StudentAge" : 21 }
{ "StudentFirstName" : "Bob", "StudentAge" : 20 }
{ "StudentFirstName" : "David", "StudentAge" : 22 }

정리

$project 단계에서 _id: false(또는 0)를 지정하면 MongoDB는 기본적으로 항상 포함되던 _id 필드를 결과에서 제외합니다. 이 방식은 API 응답에서 내부 식별자를 숨기거나, 원하는 형태로 데이터 구조를 재구성할 때 매우 유용하게 활용됩니다. 참고로 find() 메서드에서도 db.demo226.find({}, {"_id": 0})처럼 프로젝션 옵션을 사용해 동일한 결과를 얻을 수 있습니다.