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

MongoDB에서 id 필드를 숨기고 원하는 필드만 조회하는 방법

MongoDB에서 id 필드를 숨기고 원하는 필드만 조회하는 방법

MongoDB에서 데이터를 조회할 때 프로젝션(projection)을 활용하면 특정 필드만 선택적으로 표시하거나 숨길 수 있습니다. 이 글에서는 문서에 포함된 id 필드의 값을 숨기고 나머지 정보만 출력하는 방법을 예제와 함께 단계별로 살펴보겠습니다.

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

먼저 데모용 컬렉션을 만들고 insertOne() 메서드로 문서를 삽입해 보겠습니다.

> db.demo575.insertOne({id:101,Information:{Name:"Chris",Age:21}});{
   "acknowledged" : true, "insertedId" : ObjectId("5e916a55581e9acd78b427f7")
}
> db.demo575.insertOne({id:102,Information:{Name:"David",Age:20}});{
   "acknowledged" : true, "insertedId" : ObjectId("5e916a5f581e9acd78b427f8")
}
> db.demo575.insertOne({id:101,Information:{Name:"Bob",Age:23}});{
   "acknowledged" : true, "insertedId" : ObjectId("5e916a67581e9acd78b427f9")
}

2. 전체 문서 조회하기

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

> db.demo575.find();

위 명령을 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e916a55581e9acd78b427f7"), "id" : 101, "Information" : { "Name" : "Chris", "Age" : 21 } }
{ "_id" : ObjectId("5e916a5f581e9acd78b427f8"), "id" : 102, "Information" : { "Name" : "David", "Age" : 20 } }
{ "_id" : ObjectId("5e916a67581e9acd78b427f9"), "id" : 101, "Information" : { "Name" : "Bob", "Age" : 23 } }

3. id 필드를 숨기고 특정 필드만 표시하기

이제 프로젝션 옵션을 활용하여 id 필드 값을 제외하고 원하는 필드만 표시하는 쿼리를 작성해 보겠습니다. find() 메서드의 두 번째 인자로 {"Information.Name": 1}을 전달하면 조건에 맞는 문서 중 이름 정보만 가져올 수 있습니다.

> db.demo575.find({id:101},{"Information.Name":1});

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

{ "_id" : ObjectId("5e916a55581e9acd78b427f7"), "Information" : { "Name" : "Chris" } }
{ "_id" : ObjectId("5e916a67581e9acd78b427f9"), "Information" : { "Name" : "Bob" } }

참고: _id 필드까지 숨기는 방법

출력 결과를 보면 _id 필드는 여전히 함께 표시되는 것을 확인할 수 있습니다. MongoDB에서는 별도 설정이 없으면 _id 필드가 항상 반환되기 때문입니다. 만약 _id 필드까지 숨기고 싶다면 프로젝션에 {"_id": 0}을 추가하면 됩니다.

> db.demo575.find({id:101},{"_id":0,"Information.Name":1});

이처럼 프로젝션을 적절히 활용하면 클라이언트에 필요한 데이터만 전달할 수 있어 응답 크기를 줄이고 보안성도 높일 수 있습니다.