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

MongoDB find() 쿼리에서 특정 필드를 제외하는 방법

MongoDB에서 find() 메서드로 문서를 조회할 때 특정 필드를 결과에서 제외하고 싶다면 프로젝션(projection)을 활용하면 됩니다. 제외할 필드의 값을 0으로 설정하기만 하면 해당 필드는 조회 결과에 포함되지 않습니다.

기본 문법

제외하고자 하는 필드들을 아래와 같이 0으로 지정합니다. 여기서는 "yourFieldName1"과 "yourFieldName2" 두 필드를 제외하는 예시입니다.

db.yourCollectionName.find(yourQuery, {yourFieldName1:0, yourFieldName2:0});

예제 컬렉션 생성

문법을 실제로 이해해 보기 위해 먼저 샘플 컬렉션과 문서를 생성해 보겠습니다.

> db.demo567.insertOne({"Name":"Chris", Age:21});{
   "acknowledged" : true, "insertedId" : ObjectId("5e908fa139cfeaaf0b97b57b")
}
> db.demo567.insertOne({"Name":"David", Age:23});{
   "acknowledged" : true, "insertedId" : ObjectId("5e908fa939cfeaaf0b97b57c")
}
> db.demo567.insertOne({"Name":"Bob", Age:22});{
   "acknowledged" : true, "insertedId" : ObjectId("5e908faf39cfeaaf0b97b57d")
}
> db.demo567.insertOne({"Name":"Carol", Age:20});{
   "acknowledged" : true, "insertedId" : ObjectId("5e908fb539cfeaaf0b97b57e")
}

전체 문서 조회

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

> db.demo567.find();

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

{ "_id" : ObjectId("5e908fa139cfeaaf0b97b57b"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e908fa939cfeaaf0b97b57c"), "Name" : "David", "Age" : 23 }
{ "_id" : ObjectId("5e908faf39cfeaaf0b97b57d"), "Name" : "Bob", "Age" : 22 }
{ "_id" : ObjectId("5e908fb539cfeaaf0b97b57e"), "Name" : "Carol", "Age" : 20 }

특정 필드를 제외한 쿼리 실행

이제 조건에 맞는 문서 중에서 일부 필드를 제외하여 조회하는 쿼리를 살펴보겠습니다. 아래 예시에서는 Name이 "Chris" 또는 "Bob"인 문서를 찾되, Age와 _id 필드를 제외합니다.

> db.demo567.find({Name:{$in:["Chris","Bob"]}}, {Age:0, _id:0});

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

{ "Name" : "Chris" }
{ "Name" : "Bob" }

참고 사항

프로젝션에서 주의할 점은 포함(1)과 제외(0)를 혼합해서 사용할 수 없다는 것입니다. 단, 기본적으로 항상 출력되는 _id 필드만은 예외적으로 _id:0으로 명시하여 제외할 수 있습니다. 따라서 특정 필드만 골라 보고 싶다면 원하는 필드를 1로 지정하고, 불필요한 필드를 빼고 싶다면 위 예제처럼 0으로 지정하는 방식을 일관되게 사용하는 것이 좋습니다.