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

MongoDB 문서에 포함된 내장 데이터를 조회하는 방법

MongoDB에서는 하나의 문서 안에 다른 문서를 중첩하여 저장하는 내장(Embedded) 데이터 구조를 자주 사용합니다. 이 글에서는 내장된 데이터를 특정하여 조회하는 방법을 예제와 함께 살펴보겠습니다.

내장 데이터를 가져오는 기본 문법

MongoDB 문서에 포함된 데이터를 조회하려면 점(.) 표기법을 사용하여 외부 키와 내부 키를 연결하면 됩니다. 기본 문법은 다음과 같습니다.

db.yourCollectionName.find({}, {'yourOuterKeyName.yourInnerKeyName': 1}).pretty();

여기서 두 번째 인자인 프로젝션(projection)에 1을 지정하면 해당 필드만 화면에 표시됩니다.

예제 컬렉션 생성하기

먼저 내장 데이터를 포함하는 컬렉션을 생성해 보겠습니다. 학생 이름과 학생별 프로젝트 정보를 중첩 구조로 저장합니다.

> db.embeddedCollectionDemo.insertOne(
...    {
...       "StudentName" : "Larry",
...       "StudentDetails": {
...          "Larry1234": {"ProjectName": "Student Web Tracker"},
...          "Larry7645": {"ProjectName": "Hospital Management System"},
...          "Larry9879": {"ProjectName": "Library Management System"}
...       }
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c98a100330fd0aa0d2fe4c5")
}

컬렉션의 전체 문서 확인하기

컬렉션에 저장된 모든 문서를 조회하려면 다음 쿼리를 실행합니다.

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

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

{
   "_id" : ObjectId("5c98a100330fd0aa0d2fe4c5"),
   "StudentName" : "Larry",
   "StudentDetails" : {
      "Larry1234" : {
         "ProjectName" : "Student Web Tracker"
      },
      "Larry7645" : {
         "ProjectName" : "Hospital Management System"
      },
      "Larry9879" : {
         "ProjectName" : "Library Management System"
      }
   }
}

내장된 특정 데이터만 조회하기

이제 내장 데이터 중 StudentDetails 안의 Larry7645 키에 해당하는 값만 가져와 보겠습니다. 점 표기법으로 경로를 지정하면 됩니다.

> db.embeddedCollectionDemo.find({}, {'StudentDetails.Larry7645': 1}).pretty();

실행 결과는 다음과 같습니다. 원하는 내장 데이터만 정확히 조회된 것을 확인할 수 있습니다.

{
   "_id" : ObjectId("5c98a100330fd0aa0d2fe4c5"),
   "StudentDetails" : {
      "Larry7645" : {
         "ProjectName" : "Hospital Management System"
      }
   }
}

정리

MongoDB에서 내장된 데이터를 조회할 때는 find() 메서드의 두 번째 인자에 점 표기법(외부키.내부키)으로 필드를 지정하고, 프로젝션 값으로 1을 설정하면 됩니다. 이 방법을 활용하면 대량의 중첩 문서에서도 필요한 데이터만 효율적으로 추출할 수 있습니다.