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

MongoDB에서 단일 필드만 조회하는 쿼리 방법

MongoDB 단일 필드 쿼리 개요

MongoDB에서 특정 필드 하나만 조회하고 싶다면 find() 메서드에 프로젝션(projection) 옵션을 활용하면 됩니다. 프로젝션을 사용하면 컬렉션의 모든 문서 중에서 원하는 필드만 선택적으로 출력할 수 있어, 불필요한 데이터 전송을 줄이고 쿼리 성능을 높일 수 있습니다.

먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

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

> db.demo10.insertOne({"StudentId":101,"StudentName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e0f68a7d7df943a7cec4f9b")
}
> db.demo10.insertOne({"StudentId":102,"StudentName":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e0f68afd7df943a7cec4f9c")
}
> db.demo10.insertOne({"StudentId":103,"StudentName":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e0f68b5d7df943a7cec4f9d")
}

위 코드는 demo10이라는 컬렉션에 학생 정보 세 건을 차례대로 삽입합니다. 각 문서는 StudentIdStudentName 두 개의 필드를 가지고 있습니다.

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

find() 메서드를 인자 없이 실행하면 컬렉션의 모든 문서를 확인할 수 있습니다.

> db.demo10.find();

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

{ "_id" : ObjectId("5e0f68a7d7df943a7cec4f9b"), "StudentId" : 101, "StudentName" : "Chris" }
{ "_id" : ObjectId("5e0f68afd7df943a7cec4f9c"), "StudentId" : 102, "StudentName" : "David" }
{ "_id" : ObjectId("5e0f68b5d7df943a7cec4f9d"), "StudentId" : 103, "StudentName" : "Bob" }

기본적으로 _id 필드를 포함한 모든 필드가 함께 출력되는 것을 확인할 수 있습니다.

3. 프로젝션으로 단일 필드만 조회하기

이제 StudentName 필드 하나만 조회해 보겠습니다. 두 번째 인자인 프로젝션 객체에서 제외할 필드에는 0, 포함할 필드에는 1을 지정합니다. 아래 예제에서는 _idStudentId를 제외(0)하여 결과적으로 StudentName만 남깁니다.

> db.demo10.find({},{"_id":0,"StudentId":0});

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

{ "StudentName" : "Chris" }
{ "StudentName" : "David" }
{ "StudentName" : "Bob" }

정리

find()의 첫 번째 인자는 조회 조건(query filter)이고, 두 번째 인자는 출력할 필드를 결정하는 프로젝션입니다. 조건은 비워두고({}) 프로젝션만 지정하면 컬렉션 전체 문서에서 원하는 필드만 추출할 수 있습니다. 참고로 _id 필드는 명시적으로 0으로 설정하지 않으면 항상 기본 출력되므로, 이를 제외하려면 반드시 "_id": 0을 지정해야 한다는 점을 기억해 두세요.