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

MongoDB에서 이중 중첩 배열(Double Nested Array) 생성하고 조회하는 방법

MongoDB에서 이중 중첩 배열(Double Nested Array) 생성하기

MongoDB에서 이중 중첩 배열을 만들려면 먼저 문서를 포함하는 컬렉션을 생성하는 쿼리를 구현해야 합니다. 아래 예제에서는 학생 정보(Student Details)를 담으면서, 그 안에 프로젝트 이름과 해당 프로젝트를 개발하는 데 사용된 기술 목록까지 두 겹으로 중첩된 배열 구조를 함께 저장합니다.

1단계: insertOne()으로 이중 중첩 배열 문서 삽입

insertOne() 메서드를 사용해 첫 번째 학생 문서를 삽입합니다. StudentDetails 배열 안에 ProjectName 필드가 있고, 그 안의 ProjectDetails 배열에 TechnologyUsed 정보가 다시 중첩되어 있는 구조입니다.

> db.doubleNestedArrayDemo.insertOne(
... {
...    "StudentId" : "1000",
...    "StudentName" : "Larry",
...    "StudentDetails" : [
...    {
...       "ProjectName" : "Online Banking",
...       "ProjectDetails" : [
...       {
...          "TechnologyUsed" : "Java"
...       },
...       {
...          "TechnologyUsed" : "MySQL in Backend"
...       }
...       ]
...    }
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c992bd7330fd0aa0d2fe4cc")
}

같은 방식으로 두 번째 학생 문서도 삽입합니다.

> db.doubleNestedArrayDemo.insertOne( { "StudentId" : "1001", "StudentName" : "Robert", "StudentDetails" : [ { "ProjectName" : "Student Web Tracker", "ProjectDetails" : [ { "TechnologyUsed" : "Django Framework" }, { "TechnologyUsed" : "MongoDB in Backend" } ] } ] } );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c992cdb330fd0aa0d2fe4cd")
}

2단계: find() 메서드로 저장된 문서 확인

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

> db.doubleNestedArrayDemo.find().pretty()

위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

{
   "_id" : ObjectId("5c992bd7330fd0aa0d2fe4cc"),
   "StudentId" : "1000",
   "StudentName" : "Larry",
   "StudentDetails" : [
      {
         "ProjectName" : "Online Banking",
         "ProjectDetails" : [
            {
               "TechnologyUsed" : "Java"
            },
            {
               "TechnologyUsed" : "MySQL in Backend"
            }
         ]
      }
   ]
}
{
   "_id" : ObjectId("5c992cdb330fd0aa0d2fe4cd"),
   "StudentId" : "1001",
   "StudentName" : "Robert",
   "StudentDetails" : [
      {
         "ProjectName" : "Student Web Tracker",
         "ProjectDetails" : [
            {
               "TechnologyUsed" : "Django Framework"
            },
            {
               "TechnologyUsed" : "MongoDB in Backend"
            }
         ]
      }
   ]
}

추가 팁: 점 표기법(Dot Notation)으로 중첩 필드 조회하기

이중 중첩 배열 내부의 특정 값을 조회할 때는 점 표기법을 활용하면 편리합니다. 예를 들어 db.doubleNestedArrayDemo.find({"StudentDetails.ProjectName": "Online Banking"})처럼 조건을 지정하면, MongoDB가 배열 내부를 자동으로 탐색하여 프로젝트 이름이 일치하는 문서만 손쉽게 검색할 수 있습니다.