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

MongoDB에서 점 표기법(Dot Notation)으로 중첩 객체에 접근하는 방법

MongoDB에서 점 표기법으로 중첩 객체에 접근하기

MongoDB는 문서(document) 내부에 또 다른 문서나 배열을 중첩해 저장할 수 있는 유연한 스키마 구조를 제공합니다. 이렇게 깊게 중첩된 객체의 특정 필드에 접근하려면 점 표기법(dot notation)을 사용하면 됩니다. 이 글에서는 실제 예제를 통해 중첩 객체 구조에서 데이터를 조회하는 방법을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성

먼저 학생 정보를 여러 겹의 중첩 객체 형태로 담고 있는 문서를 삽입하여 컬렉션을 생성해 보겠습니다.

> db.nestedObjectDemo.insertOne({"Student" : { "StudentDetails" : { "StudentPersonalDetails" : { "StudentName" : [ "John" ],
... "StudentCountryName" : [ "US" ],
... "StudentCoreSubject" : [ "C", "Java" ],
... "StudentProject" : [ "Online Book Store", "Pig Dice Game" ] } } } });
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c99dfc2863d6ffd454bb650")
}

insertOne() 메서드가 정상적으로 실행되면 acknowledged 값이 true로 반환되며, MongoDB가 자동으로 생성한 ObjectId도 함께 확인할 수 있습니다.

2. 전체 문서 조회

find() 메서드와 pretty() 메서드를 함께 사용하면 컬렉션의 모든 문서를 보기 좋게 정렬된 형태로 출력할 수 있습니다.

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

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

{
    "_id" : ObjectId("5c99dfc2863d6ffd454bb650"),
    "Student" : {
        "StudentDetails" : {
            "StudentPersonalDetails" : {
                "StudentName" : [
                    "John"
                ],
                "StudentCountryName" : [
                    "US"
                ],
                "StudentCoreSubject" : [
                    "C",
                    "Java"
                ],
                "StudentProject" : [
                    "Online Book Store",
                    "Pig Dice Game"
                ]
            }
        }
    }
}

3. 점 표기법으로 중첩 객체 접근

중첩된 필드에 접근하려면 최상위 필드부터 원하는 필드까지 마침표(.)로 연결해 경로를 지정합니다. 예를 들어 StudentName이 "John"인 문서를 조회하려면 다음과 같이 작성합니다.

>db.nestedObjectDemo.find({"Student.StudentDetails.StudentPersonalDetails.StudentName":"John"}).pretty();

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

{
    "_id" : ObjectId("5c99dfc2863d6ffd454bb650"),
    "Student" : {
        "StudentDetails" : {
            "StudentPersonalDetails" : {
                "StudentName" : [
                    "John"
                ],
                "StudentCountryName" : [
                    "US"
                ],
                "StudentCoreSubject" : [
                    "C",
                    "Java"
                ],
                "StudentProject" : [
                    "Online Book Store",
                    "Pig Dice Game"
                ]
            }
        }
    }
}

정리

MongoDB에서 중첩 객체의 필드에 접근할 때는 반드시 점 표기법을 사용해야 하며, 필드 이름을 큰따옴표로 감싸 문자열 형태로 지정하는 것이 안전합니다. 또한 이 방식은 "필드명.인덱스" 형태로 배열 요소에 접근할 때도 활용할 수 있어, 아무리 복잡한 문서 구조라도 원하는 데이터를 정확하게 조회할 수 있습니다.