validateDBMetadata
정의
버전 5.0에 추가.
validateDBMetadata
validateDBMetadata
명령은 데이터베이스 또는 컬렉션의 저장된 메타데이터가 특정 API 버전 내에서 유효한지 확인합니다.validateDBMetadata
은(는) 오류를 보고하지만 오류를 수정할 수 있는 기능이 없습니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
참고
이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 관해 자세히 알아보려면 지원되지 않는 명령을 참조하십시오.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
명령은 다음과 같은 구문을 가집니다:
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: <string>, strict: <boolean>, deprecationErrors: <boolean> }, db: <string>, collection: <string>, } )
명령 필드
이 명령은 다음 필드를 사용합니다.
필드 | 유형 | 설명 |
---|---|---|
문서 | 모든 필드는 필수 입력 사항 입니다.
| |
| 문자열 | 선택 사항. 유효성을 검사할 데이터베이스의 이름입니다. 데이터베이스를 지정하지 않으면 모든 데이터베이스의 유효성이 검사됩니다. |
| 문자열 | 선택 사항. 유효성을 검사할 collection 또는 뷰의 이름입니다. collection이나 뷰를 지정하지 않으면 |
행동
모든 데이터베이스의 모든 collection을 검증하여 APIStrictError 및 APIVersionError 오류 응답을 보고합니다.
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, }) inventory
의 모든 collection 유효성 검사:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", }) inventory
데이터베이스에서sales
collection의 유효성을 검사합니다:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", collection: "sales", }) 모든 데이터베이스에서 모든
sales
collection의 유효성을 검사합니다:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
참고
사용자에게 유효성을 검사하려는 모든 collection에 대한 validate
권한 조치가 있어야 합니다.
출력
{ apiVersionErrors: [ { ns: <string>, code: <int>, codeName: <string>, errmsg: <string> } ], ok: <int>, hasMoreErrors: <boolean>, }
validateDBMetadata.ok
명령이 실패하면
ok
가1
로 설정됩니다. 그렇지 않으면ok
가0
로 설정됩니다.validateDBMetadata.ok
는0
의 값을 가질 수 있으며 여전히 유효성 검사 오류를 보고합니다.
예시
샘플 Query API 코드를 사용하여 mongosh
에서 sales
컬렉션을 만듭니다.
db.sales.insertMany([ { "_id" : 1, "item" : "shoes", "price" : 10, "quantity" : 2, "date" : ISODate("2021-01-01T08:00:00Z") }, { "_id" : 2, "item" : "hat", "price" : 20, "quantity" : 1, "date" : ISODate("2021-02-03T09:00:00Z") }, { "_id" : 3, "item" : "gloves", "price" : 5, "quantity" : 5, "date" : ISODate("2021-02-03T09:05:00Z") }, { "_id" : 4, "item" : "pants", "price" : 10, "quantity" : 10, "date" : ISODate("2021-02-15T08:00:00Z") }, { "_id" : 5, "item" : "socks", "price" : 5, "quantity" : 10, "date" : ISODate("2021-02-15T09:05:00Z") }, { "_id" : 6, "item" : "shirt", "price" : 5, "quantity" : 5, "date" : ISODate("2021-02-15T12:05:10Z") }, { "_id" : 7, "item" : "belt", "price" : 5, "quantity" : 10, "date" : ISODate("2021-02-15T14:12:12Z") }, { "_id" : 8, "item" : "blouse", "price" : 10, "quantity" : 5, "date" : ISODate("2021-03-16T20:20:13Z") } ])
item
필드에 텍스트 인덱스 를 추가합니다.
db.sales.createIndex( { item: "text" } )
sales
collection이 API 버전 1을 엄격하게 준수하는지 확인하고 출력에 deprecationErrors
를 포함합니다.
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
validateDBMetadata
이(가) item_text
인덱스에서 APIStrictError
을(를) 보고합니다.
{ apiVersionErrors: [ { ns: 'test.sales', code: 323, codeName: 'APIStrictError', errmsg: 'The index with name item_text is not allowed in API version 1.' } ], ok: 1, hasMoreErrors: false, }