MongoDB 배열에 요소 추가

Shraddha Paghdar 2023년6월20일
MongoDB 배열에 요소 추가

이 기사에서는 MongoDB의 배열에 추가하는 많은 방법을 살펴봅니다.

MongoDB의 배열에 추가

$push 연산자를 사용하여 배열에 값 추가

$push 연산자는 문서의 배열 필드 내용을 업데이트하기 위해 MongoDB에서 제공하는 다양한 배열 업데이트 연산자 중 하나입니다. $push 연산자는 배열에 특정 값을 추가할 수 있습니다.

$push 연산자는 배열 끝에 항목을 추가합니다. $push 연산자로 지정된 필드가 배열이 아닌 경우 이 조치는 실패합니다.

통사론:

{
    $push: {
        <field1>: <value1>,
        <field2>: <value2>,
        ...
    }
}

이 경우 필드는 배열, 내장/중첩 문서 또는 점 표기법을 사용하여 지정할 수 있습니다. 필요에 따라 이 연산자를 update(), findAndModify() 등과 같은 메서드와 결합할 수 있습니다.

$push 연산자는 제공된 필드가 아직 문서에 없는 경우 해당 요소로 값이 있는 배열 필드를 추가합니다.

$push 연산자의 값이 배열이면 전체 배열이 단일 요소로 추가됩니다. 또한 각 값 구성 요소를 독립적으로 추가하려는 경우 $each 한정자와 $push 연산자를 사용할 수 있습니다.

이전 아이디어를 더 잘 이해하는 데 도움이 되도록 다음 예를 고려하십시오.

db.employees.update(
    {name: "John Doe"},
    {$push: {'professional_skills.$.technical': { skill: "C++", exp: '1' }}}
)

위의 예에서는 employees 컬렉션에서 "John Doe" 사용자를 변경합니다. professional_skills 배열에는 기술, 커뮤니케이션 능력 등이 포함되어 있으며 여기에 저장됩니다.

직원의 경험을 하나의 객체로 통합하여 직원의 새로운 기술 전문성을 기술 역량으로 밀어내고 있습니다. MongoDB와 호환되는 MongoShell에서 위의 코드 줄을 실행합니다.

출력:

{
  "_id" : ObjectId("54f612b6029b47919a90cesd"),
  "email" : "johndoe@exampledomain.com",
  "name" : "John Doe",
  "country" : "USA",
  professional_skills: [
        {
            technical:[
                { skill:'javascript', exp: 4},
                { skill:'c', exp: 3}
            ]
        },
    ]
}

$addToSet 연산자를 사용하여 배열에 값 추가

배열에 값을 추가할 때 $addToSet 연산자는 값이 배열에 이미 존재하는지 확인합니다. 그렇지 않으면 아무 작업도 수행하지 않습니다. 이 연산자는 배열에 중복 항목을 추가하지 않으며 이미 있는 중복 항목에 영향을 주지 않습니다.

값의 순서는 이 상황과 관련이 없습니다.

통사론:

{
    $addToSet: {
        <field1>: <value1>,
        <field2>: <value2>,
        ...
    }
}

이 경우 필드는 배열, 내장/중첩 문서 또는 점 표기법을 사용하여 지정할 수 있습니다. 필요에 따라 이 연산자를 update(), findAndModify() 등과 같은 메서드와 결합할 수 있습니다.

배열 이외의 필드는 이 연산자와 함께 사용할 수 없습니다. $addToSet 연산자는 요청된 필드가 존재하지 않는 경우 값 또는 항목이 있는 문서의 배열 필드를 생성합니다.

이전 아이디어를 더 잘 이해하는 데 도움이 되도록 다음 예를 고려하십시오.

db.employees.update(
   {name: "John Doe"},
   {$addToSet: {'professional_skills.$.technical': { skill: "C++", exp: '1' }}}
)

위의 예에서는 employees 컬렉션에서 "John Doe" 사용자를 변경합니다. professional_skills 배열에는 기술, 커뮤니케이션 능력 등이 포함되어 있으며 여기에 저장됩니다.

직원의 경험을 하나의 객체로 통합하여 직원의 새로운 기술 전문성을 기술 역량으로 밀어내고 있습니다. 주요 차이점은 $addToSet은 아직 존재하지 않는 요소를 추가하는 반면 $push는 배열 또는 목록에 새 요소를 추가한다는 것입니다.

MongoDB와 호환되는 MongoShell에서 위의 코드 줄을 실행합니다.

출력:

{
  "_id" : ObjectId("54f612b6029b47919a90cesd"),
  "email" : "johndoe@exampledomain.com",
  "name" : "John Doe",
  "country" : "USA",
  professional_skills: [
        {
            technical:[
                { skill:'javascript', exp: 4},
                { skill:'c', exp: 3}
            ]
        },
    ]
}
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

관련 문장 - MongoDB Array