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

MongoDB 컬렉션에서 특정 키-값 쌍을 조회하는 방법

MongoDB 컬렉션에서 특정 키-값 쌍만 조회하고 싶다면 점(.) 표기법(dot notation)을 활용하면 됩니다. 점 표기법을 사용하면 중첩된 문서(nested document) 내부의 특정 필드에 손쉽게 접근할 수 있습니다.

1. 샘플 컬렉션 생성하기

먼저 실습에 사용할 문서를 포함한 컬렉션을 생성해 보겠습니다. 아래 예제에서는 학생 정보를 담은 중첩 문서를 하나 삽입합니다.

> db.readSpecificKeyValueDemo.insertOne(
...    {
...       "_id": 100,
...       "StudentDetails":
...       {
...          "StudentFirstName" : "David",
...          "StudentLastName" : "Miller",
...          "StudentAge": 23,
...          "StudentCountryName": "US"
...       }
...    }
... );
{ "acknowledged" : true, "insertedId" : 100 }

2. 전체 문서 확인하기

컬렉션이 정상적으로 생성되었는지 확인하기 위해 find() 메서드와 pretty() 메서드를 함께 사용하여 모든 문서를 출력해 보겠습니다.

> db.readSpecificKeyValueDemo.find().pretty();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{
   "_id" : 100,
   "StudentDetails" : {
      "StudentFirstName" : "David",
      "StudentLastName" : "Miller",
      "StudentAge" : 23,
      "StudentCountryName" : "US"
   }
}

3. 특정 키-값 쌍만 조회하기

이제 본격적으로 점 표기법을 사용하여 중첩 문서 안의 특정 필드만 조회해 보겠습니다. find() 메서드의 두 번째 인자인 프로젝션(projection) 부분에 원하는 필드 경로를 지정하고 값을 1로 설정하면, 해당 필드만 결과에 포함됩니다.

> db.readSpecificKeyValueDemo.find({},{"StudentDetails.StudentCountryName":1}).pretty();

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

{ "_id" : 100, "StudentDetails" : { "StudentCountryName" : "US" } }

핵심 정리

  • 점 표기법: "상위필드.하위필드" 형태로 중첩 문서의 내부 필드에 접근합니다.
  • 프로젝션: find()의 두 번째 인자에서 필드명 뒤에 1을 붙이면 해당 필드만 반환되고, 0을 붙이면 제외됩니다.
  • _id 필드: 별도로 지정하지 않아도 기본적으로 항상 함께 반환됩니다.

이처럼 점 표기법과 프로젝션을 조합하면 대용량 데이터에서도 필요한 정보만 효율적으로 추출할 수 있어 네트워크 전송량과 애플리케이션 성능 측면에서 큰 이점을 얻을 수 있습니다.