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

MongoDB에서 중첩된 값(Nested Value) 조회하기 – 점 표기법 완벽 가이드

MongoDB에서 중첩된 문서(document) 내부의 특정 값에 접근하려면 점 표기법(dot notation)을 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 중첩된 데이터를 삽입하고, 전체 문서를 확인한 뒤, 조건에 맞는 문서를 검색하는 방법까지 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성하기

먼저 중첩된 구조를 가진 문서들을 담은 컬렉션을 생성합니다. 아래 예제에서는 직원 이름(EmployeeName)과 함께 사번, 나이, 회사명 등의 상세 정보를 담은 하위 문서(EmployeeDetails)를 포함하는 문서 두 개를 insertOne() 메서드로 삽입합니다.

> db.nestedQueryDemo.insertOne(
...     {
...
...         "EmployeeName" : "John",
...         "EmployeeDetails" :
...         {
...
...             "_id":"EMP-101",
...             "EmployeeAge":23,
...             "EmployeeCompanyName":"IBM"
...
...         }
...     }
... );
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ea31dd628fa4220163b69")
}
> db.nestedQueryDemo.insertOne(
...     {
...
...         "EmployeeName" : "Carol",
...         "EmployeeDetails" :
...         {
...
...             "_id":"EMP-110",
...             "EmployeeAge":29,
...             "EmployeeCompanyName":"Amazon"
...
...         }
...     }
... );
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ea36bd628fa4220163b6a")
}

2. 전체 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다. 여기에 pretty() 메서드를 함께 사용하면 결과가 보기 좋게 정렬되어 출력됩니다.

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

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

{
    "_id" : ObjectId("5c9ea31dd628fa4220163b69"),
    "EmployeeName" : "John",
    "EmployeeDetails" : {
        "_id" : "EMP-101",
        "EmployeeAge" : 23,
        "EmployeeCompanyName" : "IBM"
    }
}
{
    "_id" : ObjectId("5c9ea36bd628fa4220163b6a"),
    "EmployeeName" : "Carol",
    "EmployeeDetails" : {
        "_id" : "EMP-110",
        "EmployeeAge" : 29,
        "EmployeeCompanyName" : "Amazon"
    }
}

3. 중첩된 값으로 문서 조회하기

이제 핵심인 중첩 값 조회 방법입니다. 점 표기법은 "상위필드.하위필드" 형태로 경로를 지정하는 방식입니다. 예를 들어 EmployeeDetails 하위 문서의 _id가 "EMP-110"인 문서를 찾으려면 다음과 같이 쿼리를 작성합니다.

> db.nestedQueryDemo.find({"EmployeeDetails._id":"EMP-110"}).pretty();

실행 결과, 조건에 일치하는 문서만 정확히 출력되는 것을 확인할 수 있습니다.

{
    "_id" : ObjectId("5c9ea36bd628fa4220163b6a"),
    "EmployeeName" : "Carol",
    "EmployeeDetails" : {
        "_id" : "EMP-110",
        "EmployeeAge" : 29,
        "EmployeeCompanyName" : "Amazon"
    }
}

마무리 정리

MongoDB에서 중첩된 필드를 조회할 때는 점 표기법 경로를 반드시 큰따옴표로 묶인 문자열 형태("EmployeeDetails._id")로 지정해야 한다는 점에 유의하세요. 이 방식은 배열 요소나 그보다 더 깊은 중첩 구조에도 동일하게 적용할 수 있어, 복잡한 문서 구조 속에서도 원하는 데이터를 간단하고 정확하게 추출할 수 있습니다.