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

MongoDB 배열에서 짝수만 추출하는 방법 – $mod와 $pull 연산자 활용법

MongoDB에서 배열에 저장된 숫자 중 짝수만 골라내거나 제거하고 싶다면 $mod 연산자와 $pull 연산자를 함께 사용하면 됩니다. $mod는 나머지 연산을 수행하는 연산자로, [2, 0] 조건을 지정하면 '2로 나눈 나머지가 0인 값', 즉 짝수를 정확히 찾아낼 수 있습니다.

아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.

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

먼저 숫자 배열을 포함하는 문서로 컬렉션을 생성합니다.

> db.pullEvenNumbersDemo.insertOne({"AllNumbers":[101,102,104,106,108,109,110,112,14,17,18,21]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd45b072cba06f46efe9eea")
}

2. 저장된 문서 확인하기

find() 메서드를 사용하면 컬렉션의 모든 문서를 조회할 수 있습니다.

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

위 쿼리를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

{
   "AllNumbers" : [
      102,
      104,
      106,
      108,
      109,
      110,
      112,
      14,
      17,
      18,
      21
   ]
}

3. $pull과 $mod로 배열에서 짝수 제거하기

이제 핵심 단계입니다. updateMany() 메서드 안에서 $pull 연산자에 $mod: [2, 0] 조건을 조합하면, 배열 요소 중 2로 나누어 떨어지는 값(짝수)이 모두 제거됩니다.

> db.pullEvenNumbersDemo.updateMany({},{ "$pull": { "AllNumbers": { "$mod": [ 2, 0 ] } } } );
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

쿼리 실행 결과 matchedCount: 1, modifiedCount: 1이 반환되며, 하나의 문서가 성공적으로 수정되었음을 알 수 있습니다.

4. 최종 결과 확인하기

업데이트가 완료된 후 문서를 다시 조회해 보겠습니다.

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

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

{
   "_id" : ObjectId("5cd45b072cba06f46efe9eea"),
   "AllNumbers" : [
      101,
      109,
      17,
      21
   ]
}

배열을 확인해 보면 102, 104, 106 등 짝수는 모두 사라지고 101, 109, 17, 21처럼 홀수만 남은 것을 확인할 수 있습니다.

핵심 정리

  • $mod: [2, 0] → 2로 나눈 나머지가 0인 값, 즉 짝수를 의미합니다.
  • $pull → 지정한 조건과 일치하는 배열 요소를 모두 제거합니다.
  • 반대로 홀수만 제거하고 싶다면 $mod: [2, 1]로 조건을 변경하면 됩니다.

이처럼 $mod$pull의 조합은 MongoDB 배열 데이터를 조건 기반으로 손쉽게 필터링할 수 있는 강력한 방법입니다.