Count() 및 Remove() 함수 MongoDB 예와 함께

⚡ 스마트 요약

Count() 및 Remove() 함수 MongoDB 컬렉션에 포함된 문서 수를 보고하고 컬렉션에서 문서를 삭제합니다. `count()` 메서드는 문서의 총 개수를 반환하고, `remove()` 메서드는 모든 문서를 삭제하거나 지정된 조건과 일치하는 문서만 삭제합니다.

  • 🔢 문서 개수 세기: count() 메서드는 컬렉션에 있는 문서 수 또는 쿼리와 일치하는 문서 수를 반환합니다.
  • 🎯 필터를 사용한 개수 세기: count() 함수에 조건을 전달하면 해당 조건을 만족하는 문서만 보고됩니다.
  • 🗑️ 문서 삭제: remove() 메서드는 모든 문서를 삭제하거나, 지정된 조건 객체와 일치하는 문서만 삭제합니다.
  • ☝️ 하나를 제거하세요: justOne 옵션은 remove() 함수가 일치하는 모든 문서를 삭제하는 대신 일치하는 문서 하나만 삭제하도록 제한합니다.
  • 🔄 현대적인 방법: countDocuments() 및 deleteMany()는 더 이상 사용되지 않는 count() 및 remove()를 대체하는 현재 함수입니다.
  • 🖨️ 출력 확인: 각 명령은 삭제된 문서의 수 또는 개수를 보여주는 결과를 반환합니다.

Count() 및 Remove() 함수 MongoDB

MongoDB 카운트() 함수

집계의 개념은 쿼리에서 반환된 결과에 대해 계산을 수행하는 것입니다. 예를 들어, 실행된 쿼리에 따라 컬렉션의 문서 수가 얼마인지 알고 싶다고 가정해 보겠습니다. MongoDB count() 함수를 제공합니다.

예 MongoDB 카운트() 함수

이에 대한 예를 살펴보겠습니다.

db.Employee.count()

Code 설명 :

  • 위의 코드는 count 함수를 실행합니다.

명령이 성공적으로 실행되면 다음 출력이 표시됩니다.

출력:

예 MongoDB 카운트() 함수

출력에는 컬렉션에 4개의 문서가 있음이 명확하게 표시됩니다.

MongoDB 쿼리 조건을 사용한 개수

`count()` 메서드는 쿼리 조건을 전달할 때 가장 유용합니다. 전체 컬렉션이 아닌, 해당 조건과 일치하는 문서만 계산하기 때문입니다. 이는 부서에 속한 직원 수나 미처리 주문 수와 같은 보고서를 작성할 때 유용합니다.

다음 예시는 Employeeid가 2보다 큰 직원의 수를 계산합니다.

db.Employee.count({Employeeid:{$gt:2}})

다음과 같이됩니다.

  • 쿼리 객체 {Employeeid:{$gt:2}}는 $gt(보다 큼) 연산자를 사용하여 필터 역할을 합니다.
  • count() 함수는 필터를 만족하는 문서의 수만 반환합니다.
  • 나머지 컬렉션은 총액 계산에서 제외됩니다.

현재 MongoDB 버전별 조건부 개수 계산에는 countDocuments() 메서드가 권장됩니다. 이 메서드는 항상 정확한 결과를 반환하기 때문입니다. 동일한 쿼리를 사용해도 정상적으로 작동합니다.

db.Employee.countDocuments({Employeeid:{$gt:2}})

두 명령 모두 단일 숫자를 반환하며, 이 숫자는 변수에 저장하거나 직접 표시할 수 있습니다. 쿼리하는 필드에 일치하는 인덱스를 추가하면 대규모 컬렉션에서 조건부 카운트 속도를 유지할 수 있습니다.

수정 수행

다른 두 가지 작업 클래스 MongoDB 업데이트 및 제거 문입니다.

업데이트 작업을 통해 기존 데이터를 수정할 수 있고, 제거 작업을 통해 컬렉션에서 데이터를 삭제할 수 있습니다.

Remove() 함수 MongoDB

In MongoDB 밸리 db.collection.remove() 메서드는 컬렉션에서 문서를 제거하는 데 사용됩니다. 모든 문서를 컬렉션에서 제거하거나 특정 조건과 일치하는 문서만 제거할 수 있습니다.

제거 명령만 실행하면 모든 문서가 컬렉션에서 제거됩니다.

예 MongoDB 제거() 함수

다음 코드 예제는 컬렉션에서 특정 문서를 제거하는 방법을 보여줍니다.

db.Employee.remove({Employeeid:22})

Code 설명 :

  • 위의 코드는 제거 기능을 사용하고 이 경우 직원 ID가 22인 문서를 제거하는 기준을 지정합니다.

명령이 성공적으로 실행되면 다음 출력이 표시됩니다.

출력:

예 MongoDB 제거() 함수

출력 결과에는 문서 1개가 삭제된 것으로 표시됩니다.

모든 문서 삭제 vs 단일 문서 삭제

`remove()` 메서드는 전달하는 인수에 따라 일치하는 모든 문서를 삭제하거나 하나만 삭제할 수 있습니다. 이 차이점을 이해하면 의도치 않은 데이터 손실을 방지할 수 있습니다.

컬렉션의 모든 문서를 제거하려면 빈 조건을 전달하세요.

db.Employee.remove({})

이렇게 하면 모든 문서가 삭제되지만 컬렉션 자체는 유지됩니다. 조건을 만족하는 문서만 삭제하려면 앞서 {Employeeid:22} 예시처럼 쿼리 객체를 전달하세요. 여러 문서가 조건을 만족하고 첫 번째 문서만 삭제하려면 justOne 옵션을 추가하세요.

db.Employee.remove({EmployeeName:"Smith"}, {justOne:true})

주요 차이점은 다음과 같습니다.

  • remove({})는 컬렉션의 모든 문서를 삭제합니다.
  • remove({condition})는 조건과 일치하는 모든 문서를 삭제합니다.
  • remove({condition}, {justOne:true})는 일치하는 첫 번째 문서만 삭제합니다.

삭제 명령을 실행하기 전에 항상 조건을 다시 확인하십시오. 필터가 비어 있거나 잘못된 경우 전체 컬렉션이 삭제될 수 있습니다. 최신 버전에서는 MongoDBdeleteOne()과 deleteMany()는 이러한 패턴을 대체하여 의도를 더욱 명확하게 합니다.

count() 및 remove()의 현대적인 대안

count()와 remove()는 모두 레거시 메서드입니다. (새로운 메서드) MongoDB 드라이버는 해당 메서드를 더 이상 사용하지 않는 것으로 표시하고 더 명확한 대체 메서드를 제공합니다. 아래 표는 각 기존 메서드를 최신 메서드에 매핑합니다.

레거시 방법 최신 교체품 목적
카운트() countDocuments() 일치하는 문서의 정확한 개수를 반환합니다.
카운트() estimatedDocumentCount() 모든 문서의 수를 빠르고 대략적으로 반환합니다.
없애다() 삭제원() 필터와 일치하는 첫 번째 문서를 삭제합니다.
없애다() deleteMany() 필터와 일치하는 모든 문서를 삭제합니다.

새로운 애플리케이션에는 이러한 최신 방식을 사용하는 것이 좋습니다. 최신 방식은 개수 계산과 추정, 그리고 문서 하나 삭제와 여러 문서 삭제를 분리하여 쿼리를 더 안전하고 읽기 쉽게 만듭니다. 기존의 count() 및 remove() 함수는 이전 튜토리얼 및 스크립트에서는 여전히 사용할 수 있습니다.

자주 묻는 질문

`remove()`는 문서를 삭제하지만 컬렉션과 인덱스는 유지합니다. `drop()`은 모든 문서와 인덱스를 포함하여 컬렉션 전체를 삭제합니다. 데이터를 삭제하려면 `remove`를 사용하고, 컬렉션 전체를 삭제하려면 `drop`을 사용하십시오.

아니요. remove() 함수는 컬렉션 내의 문서만 삭제합니다. 컬렉션, 인덱스 및 구성은 그대로 유지되므로 컬렉션을 다시 생성할 필요 없이 나중에 새 문서를 삽입할 수 있습니다.

기존의 count() 함수는 샤딩된 클러스터에서 작업 실패 후 근사값을 반환할 수 있습니다. 정확한 총 개수를 얻으려면 집계를 수행하는 countDocuments() 함수를 사용하고, 정확도보다 속도가 중요한 경우에는 estimatedDocumentCount() 함수를 사용하십시오.

AI는 일반적인 요청을 적절한 필터를 사용하여 정확한 개수 계산 또는 삭제 쿼리로 변환하고, 삭제 명령이 모든 문서에 영향을 미칠 경우 경고를 표시할 수 있습니다. 실행하기 전에 항상 검토하십시오.

예. AI는 remove 또는 deleteMany 명령을 검토하여 전체 컬렉션을 지우는 데 필요한 필터가 누락되었는지 확인하고, 실행 전에 조건을 추가하거나 백업을 수행하도록 제안할 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.