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

MongoDB에서 $pull 연산자로 배열 요소 제거하는 방법

MongoDB $pull 연산자 소개

MongoDB 컬렉션에 저장된 배열에서 특정 요소를 제거하고 싶다면 $pull 연산자를 사용하면 됩니다. $pull 연산자는 지정한 조건과 일치하는 값을 배열에서 모두 삭제해 주는 업데이트 연산자입니다.

이 글에서는 실제 예제를 통해 컬렉션을 생성하고, $pull 연산자로 배열 요소를 제거한 뒤 결과를 확인하는 전 과정을 단계별로 살펴보겠습니다.

1. 테스트용 컬렉션 생성하기

먼저 예제로 사용할 문서가 포함된 컬렉션을 생성해 보겠습니다. 아래 예제에서는 학생 점수 배열을 가진 문서를 하나 삽입합니다.

> db.pullElementFromAnArrayDemo.insertOne(
...    {
...       "StudentScores":[89,56,78,90]
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd0104a588d4a6447b2e063")
}

2. 컬렉션의 모든 문서 조회하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.

> db.pullElementFromAnArrayDemo.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5cd0104a588d4a6447b2e063"), "StudentScores" : [ 89, 56, 78, 90 ] }

현재 StudentScores 배열에는 89, 56, 78, 90 네 개의 값이 들어 있는 것을 확인할 수 있습니다.

3. $pull 연산자로 배열 요소 제거하기

이제 $pull 연산자를 사용해 배열에서 특정 요소를 제거해 보겠습니다. 여기서는 값이 78인 요소를 삭제합니다.

> db.pullElementFromAnArrayDemo.update({},{ $pull: { StudentScores: 78 } });
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

실행 결과를 보면 nMatched가 1, nModified가 1로 표시되는데, 이는 하나의 문서가 조건에 일치했고 실제로 수정되었음을 의미합니다.

4. 삭제 후 결과 확인하기

요소가 정상적으로 제거되었는지 다시 한번 find() 메서드로 문서를 조회해 보겠습니다.

> db.pullElementFromAnArrayDemo.find();

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5cd0104a588d4a6447b2e063"), "StudentScores" : [ 89, 56, 90 ] }

출력 결과를 보면 StudentScores 배열에서 78이 사라지고 [89, 56, 90]만 남아 있는 것을 확인할 수 있습니다.

마무리

이처럼 MongoDB에서는 $pull 연산자를 활용하면 배열 필드에서 특정 값을 간단하게 제거할 수 있습니다. 참고로 최신 버전의 MongoDB에서는 update() 대신 updateOne(), updateMany() 같은 메서드를 사용하는 것이 권장되며, 조건에 일치하는 모든 값을 한 번에 제거할 수 있다는 점도 기억해 두면 유용합니다.