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

MongoDB 배열에서 특정 요소를 제거하는 방법 – $pull 연산자 활용 가이드

MongoDB에서 배열에 저장된 특정 요소를 삭제하려면 $pull 연산자를 사용하면 됩니다. $pull은 지정한 조건과 일치하는 값을 배열에서 모두 제거해 주는 업데이트 연산자로, 단일 값이나 $in 조건을 함께 사용하면 여러 값을 한 번에 삭제할 수도 있습니다.

1. 테스트용 컬렉션 생성

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

> db.demo125.insertOne({"ListOfNames":["John","Chris","Bob","David","Carol"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e2f304068e7f832db1a7f55")
}

2. 컬렉션의 문서 확인하기

find() 메서드를 사용하여 컬렉션의 모든 문서를 조회합니다.

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

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

{
    "_id" : ObjectId("5e2f304068e7f832db1a7f55"),
    "ListOfNames" : [
        "John",
        "Chris",
        "Bob",
        "David",
        "Carol"
    ]
}

3. $pull을 이용해 특정 요소 제거하기

다음은 MongoDB 배열에서 특정 요소("David")를 제거하는 쿼리입니다. 세 번째 인자인 { multi: true } 옵션을 추가하면 조건에 일치하는 모든 문서에 대해 업데이트가 적용됩니다.

> db.demo125.update(
... { },
... { $pull: { ListOfNames: { $in: [ "David"] }} },
... { multi: true }
... )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

4. 삭제 후 결과 확인

다시 find() 메서드로 전체 문서를 조회하여 변경 사항을 확인합니다.

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

실행 결과, "David"가 배열에서 성공적으로 제거된 것을 확인할 수 있습니다.

{
    "_id" : ObjectId("5e2f304068e7f832db1a7f55"),
    "ListOfNames" : [
        "John",
        "Chris",
        "Bob",
        "Carol"
    ]
}

핵심 정리

  • $pull: 배열에서 지정한 값 또는 조건에 일치하는 요소를 제거하는 연산자입니다.
  • $in: 여러 개의 값을 한 번에 제거할 때 유용하게 사용됩니다.
  • multi: true: 조건에 일치하는 모든 문서에 업데이트를 적용합니다. 생략하면 첫 번째로 일치하는 문서만 수정됩니다.

참고로 최신 MongoDB 버전에서는 update() 대신 updateMany()updateOne() 메서드를 사용하는 것이 권장되며, 위 예제의 { multi: true } 옵션은 updateMany()로 대체할 수 있습니다.