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

MongoDB에서 하위 문서 배열에 하위 문서를 추가하는 방법

MongoDB에서 $push 연산자로 하위 문서 추가하기

MongoDB에서 배열 형태로 저장된 하위 문서(sub-document)에 새로운 하위 문서를 추가하려면 $push 연산자를 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 테스트용 컬렉션 생성

먼저 문서가 포함된 컬렉션을 하나 생성해 보겠습니다.

> db.subDocumentToSubDocumentDemo.insertOne(
    {
       "_id" :101,
       "StudentName" : "Larry",
       "StudentAge" : 21,
       "StudentDetails" : [
          {
             "StudentCountryName" : "US",
             "StudentFavouriteSubjectList" : [ ]
          }
       ]
    }
);
{ "acknowledged" : true, "insertedId" : 101 }

컬렉션이 정상적으로 생성되었으며, _id : 101인 문서가 삽입되었습니다.

2단계: find() 메서드로 문서 조회하기

다음은 find() 메서드를 사용하여 컬렉션 내 모든 문서를 조회하는 쿼리입니다.

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

이 쿼리는 다음과 같은 결과를 출력합니다.

{
   "_id" : 101,
   "StudentName" : "Larry",
   "StudentAge" : 21,
   "StudentDetails" : [
      {
         "StudentCountryName" : "US",
         "StudentFavouriteSubjectList" : [ ]
      }
   ]
}

현재 StudentDetails 배열에는 국가명이 'US'인 하위 문서 하나만 존재하고, 좋아하는 과목 목록은 비어 있는 상태입니다.

3단계: $push 연산자로 하위 문서 배열에 새 하위 문서 추가

이제 MongoDB에서 하위 문서 배열 안에 새로운 하위 문서를 추가하는 쿼리를 실행해 보겠습니다.

> db.subDocumentToSubDocumentDemo.update(
   { "_id": 101 },
   {
      "$push": {
         "StudentDetails": {
            "StudentCountryName" : "UK",
            "StudentFavouriteSubjectList" : ["MongoDB","Java" ]
         }
      }
   }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

실행 결과 nModified : 1로 표시되며, 이는 해당 문서가 성공적으로 수정되었음을 의미합니다.

4단계: 업데이트 결과 확인하기

변경이 제대로 적용되었는지 전체 문서를 다시 한번 조회해 보겠습니다.

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

출력 결과는 다음과 같습니다.

{
   "_id" : 101,
   "StudentName" : "Larry",
   "StudentAge" : 21,
   "StudentDetails" : [
      {
         "StudentCountryName" : "US",
         "StudentFavouriteSubjectList" : [ ]
      },
      {
         "StudentCountryName" : "UK",
         "StudentFavouriteSubjectList" : [
            "MongoDB",
            "Java"
         ]
      }
   ]
}

정리

위 예제에서 확인할 수 있듯이, $push 연산자를 사용하면 기존 배열의 끝에 새로운 하위 문서를 간단하게 추가할 수 있습니다. StudentDetails 배열에는 이제 'US'와 'UK' 두 개의 하위 문서가 함께 들어 있으며, 새로 추가된 하위 문서에는 과목 목록도 포함되어 있습니다.

참고로 중복 값을 허용하지 않고 배열에 요소를 추가하고 싶다면 $addToSet 연산자를 사용할 수도 있습니다. 반면 순서와 무관하게 항상 배열 끝에 추가하는 것이 목적이라면 $push가 가장 적합한 선택입니다.