Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

db.collection.validate()

이 페이지의 내용

  • 설명
  • 구문
  • 행동
  • 예시

드라이버가 포함된 MongoDB

이 페이지에서는 mongosh 메서드를 설명합니다. MongoDB 드라이버에서 해당 메서드를 보려면 프로그래밍 언어의 해당 페이지를 참조하세요.

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala
db.collection.validate(<documents>)

컬렉션 의 유효성을 검사합니다. 이 메서드는 정확성을 위해 컬렉션 데이터와 인덱스를 스캔하고 결과를 반환합니다. 출력에 대한 자세한 내용은 출력 유효성 검사를 참조하세요.

버전 5.0부터 db.collection.validate() 메서드를 사용하여 컬렉션의 불일치를 수정할 수도 있습니다.

인덱스 불일치에는 다음이 포함됩니다.

  • 인덱스는 멀티키이지만 멀티키 필드는 없습니다.

  • 인덱스에는 멀티키가 아닌 필드를 포함하는 MultiKeyPath가 있습니다.

  • 인덱스에는 MultiKeyPath가 없지만 멀티키 문서가 있습니다. (3.4 이전에 빌드된 인덱스의 경우)

db.collection.validate() 명령으로 불일치가 감지되면 경고가 반환되고 인덱스의 복구 플래그가 true로 설정됩니다.

db.collection.validate()는 컬렉션의 스키마 유효성 검사 규칙을 위반하는 모든 문서의 유효성도 검사합니다.

db.collection.validate() 메서드는 validate 명령을 감싸는 래퍼(wrapper)입니다.

db.collection.validate() 메서드의 구문은 다음과 같습니다.

db.collection.validate( {
full: <boolean>, // Optional
repair: <boolean> // Optional, added in MongoDB 5.0
} )

db.collection.validate() 메소드는 필드와 함께 다음과 같은 선택적 문서 매개변수를 사용할 수 있습니다.

필드
유형
설명
부울

선택 사항입니다. 명령이 더 느리지만 더 철저한 검사를 수행할지, 아니면 더 빠르지만 덜 철저한 검사를 수행할지를 정하는 플래그입니다.

  • true인 경우 다음 예외를 제외하고 보다 철저한 검사를 수행합니다.

    • WiredTiger의 oplog에 대한 전체 유효성 검사는 더 철저한 검사를 건너뜁니다.

  • false인 경우 더 빠르지만 덜 철저한 검사를 위해 일부 검사를 생략합니다.

기본값은 false입니다.

WiredTiger 스토리지 엔진 의 경우 full 유효성 검사 프로세스 만 체크포인트 를 강제 실행하고 디스크 내 데이터를 확인하기 전에 모든 인메모리 데이터를 디스크로 플러시합니다.

부울

선택 사항입니다. 명령이 복구를 수행할지 여부를 결정하는 플래그입니다.

  • true인 경우 복구가 수행됩니다.

  • false인 경우 복구가 수행되지 않습니다.

기본값은 false입니다.

복구는 독립형 노드에서만 실행할 수 있습니다.

수리를 통해 다음 문제가 해결됩니다.

  • 누락된 인덱스 항목이 발견되면 누락된 키가 인덱스에 삽입됩니다.

  • 추가 인덱스 항목이 발견되면 추가 키가 인덱스에서 제거됩니다.

  • 멀티 인덱스가 아닌 인덱스에 대한 멀티키 문서가 발견되면 인덱스는 멀티 인덱스로 변경됩니다.

  • 인덱스의 멀티키 경로에 지정되지 않은 멀티키 문서가 발견되면 인덱스의 멀티키 경로가 업데이트됩니다.

  • 잘못된 BSON 데이터가 포함된 손상된 문서가 발견되면 해당 문서가 제거됩니다.

자세한 내용은 의 옵션을 --repair 참조하세요.mongod

버전 5.0에 추가.

db.collection.validate() 메서드는 잠재적으로 리소스 집약적이며 특히 대용량 데이터에서 MongoDB 인스턴스의 성능에 영향을 미칠 수 있습니다.

db.collection.validate() 메서드는 컬렉션에 대한 배타 잠금을 가져옵니다. 이렇게 하면 작업이 완료될 때까지 컬렉션에 대한 모든 읽기 및 쓰기가 차단됩니다. 세컨더리에서 실행되면 작업이 완료될 때까지 해당 세컨더리에서 다른 모든 작업을 차단할 수 있습니다.

경고

유효성 검사에는 읽기를 제공하는 프라이머리 및 세컨더리의 성능에 영향을 미치는 배타 락 요구 사항이 있습니다. 읽기 또는 쓰기를 제공하지 않는 노드에서만 db.collection.validate()를 실행하는 것이 좋습니다.

데이터 보유자의 대다수인 프라이머리(비중재자)에 대한 영향을 최소화하려면 클러스터에서 투표 멤버를 사용할 수 있어야 하며 복제 지연이 심하지 않아야 합니다.

유효성 검사 작업이 클라이언트 애플리케이션에 미치는 영향을 최소화하려면 읽기 요청을 제공하지 않는 세컨더리 노드에서 db.collection.validate()를 실행합니다. rs.stepDown() 메서드를 실행하여 현재 프라이머리 노드를 세컨더리 노드로 변환할 수 있습니다.

클라이언트 트래픽에서 db.collection.validate() 작업을 완전히 분리하려면 다음 옵션 중 하나를 선택하세요.

$currentOpcurrentOp 명령에는 진행 중인 유효성 검증 작업에 대한 dataThroughputAveragedataThroughputLastSecond 정보가 포함됩니다.

유효성 검사 작업에 대한 로그 메시지에는 dataThroughputAveragedataThroughputLastSecond 정보가 포함됩니다.

  • 기본 유효성 검사 설정(특히 전체: false)을 사용하여 myCollection 컬렉션의 유효성을 검사합니다.

    db.myCollection.validate()
    db.myCollection.validate({ })
    db.myCollection.validate( { full: false } )
  • 컬렉션 myCollection의 전체 유효성 검사를 수행하려면 full: true를 지정합니다.

    db.myCollection.validate( { full: true } )
  • 컬렉션 myCollection을 복구하려면 repair: true를 지정합니다.

    db.myCollection.validate( { repair: true } )

출력에 관한 자세한 내용은 출력 유효성 검사에서 확인하세요.

돌아가기

db.collection.updateOne

이 페이지의 내용