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

MongoDB update()와 $pull 연산자로 배열 요소 제거하는 방법

MongoDB에서 배열 필드에 저장된 특정 요소를 삭제해야 하는 경우가 종종 있습니다. 이럴 때 update() 메서드$pull 연산자를 함께 사용하면 간단하게 해결할 수 있습니다. $pull 연산자는 지정한 값 또는 조건과 일치하는 요소를 배열에서 모두 제거하는 역할을 합니다.

1. 테스트용 컬렉션 생성

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

> db.removingAnArrayElementDemo.insertOne({"UserMessage":["Hi","Hello","Bye"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cef97bdef71edecf6a1f6a4")
}

2. 저장된 문서 조회하기

find() 메서드를 사용하여 컬렉션에 저장된 모든 문서를 확인합니다.

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

출력 결과

{
   "_id" : ObjectId("5cef97bdef71edecf6a1f6a4"),
   "UserMessage" : [
       "Hi",
       "Hello",
       "Bye"
   ]
}

현재 UserMessage 배열에는 "Hi", "Hello", "Bye" 세 개의 문자열이 저장되어 있습니다.

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

다음은 update() 메서드와 $pull 연산자를 사용하여 배열에서 특정 요소("Hello")를 제거하는 쿼리입니다.

> db.removingAnArrayElementDemo.update(
   {_id:ObjectId("5cef97bdef71edecf6a1f6a4")},
   { "$pull": { "UserMessage": "Hello" } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

실행 결과에서 nMatched가 1, nModified가 1로 표시되었는데, 이는 조건에 일치하는 문서 1개가 성공적으로 수정되었음을 의미합니다.

4. 수정 결과 확인

배열 요소가 실제로 제거되었는지 문서를 다시 한번 조회해 보겠습니다.

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

출력 결과

{
   "_id" : ObjectId("5cef97bdef71edecf6a1f6a4"),
   "UserMessage" : [
       "Hi",
       "Bye"
   ]
}

출력 결과를 보면 "Hello"가 배열에서 사라진 것을 확인할 수 있습니다. 이처럼 $pull 연산자를 사용하면 배열 내 특정 값을 손쉽게 삭제할 수 있으며, 조건 쿼리와 함께 활용하면 여러 개의 요소를 한 번에 제거하는 것도 가능합니다.