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가 배열 내부를 자동으로 탐색하여 프로젝트 이름이 일치하는 문서만 손쉽게 검색할 수 있습니다.