MongoDB에서 배열에 저장된 특정 요소를 삭제하려면 $pull 연산자와 함께 update() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 배열 요소를 제거하는 과정을 단계별로 살펴보겠습니다.
1. 샘플 컬렉션 생성
먼저 직원 이름 목록을 담은 문서를 포함하는 컬렉션을 생성합니다.
> db.demo146.insertOne({"ListOfEmployeeNames":["Chris","David","Bob","Mike"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e32f54ffdf09dd6d08539bd")
}2. 컬렉션 문서 조회
find() 메서드를 사용하여 컬렉션의 모든 문서를 확인할 수 있습니다.
> db.demo146.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e32f54ffdf09dd6d08539bd"), "ListOfEmployeeNames" : [ "Chris", "David", "Bob", "Mike" ] }현재 배열에는 Chris, David, Bob, Mike 네 개의 이름이 저장되어 있습니다.
3. $pull 연산자로 배열 요소 제거
이제 $pull 연산자를 사용하여 배열에서 특정 요소(여기서는 "Bob")를 제거해 보겠습니다.
> db.demo146.update({}, { "$pull": { "ListOfEmployeeNames": "Bob" } });
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })실행 결과를 보면 nMatched: 1(조건에 일치한 문서 1개), nModified: 1(실제 수정된 문서 1개)로 표시되어, 업데이트가 정상적으로 수행되었음을 알 수 있습니다.
4. 결과 확인
다시 find() 메서드로 문서를 조회하여 변경 사항을 확인합니다.
> db.demo146.find();
출력 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e32f54ffdf09dd6d08539bd"), "ListOfEmployeeNames" : [ "Chris", "David", "Mike" ] }정리
$pull 연산자는 지정한 조건과 일치하는 값을 배열에서 완전히 제거합니다. 단일 값뿐만 아니라 조건식을 활용하면 여러 요소를 한 번에 삭제할 수도 있습니다. 참고로 최신 MongoDB 버전에서는 update() 대신 updateOne(), updateMany() 메서드 사용이 권장되므로, 실무에서는 상황에 맞게 선택하여 활용하시기 바랍니다.