db.getCollectionInfos()
이 페이지의 내용
정의
db.getCollectionInfos(filter, nameOnly, authorizedCollections)
현재 데이터베이스 에 대한 컬렉션 또는 보기 정보(예: 이름 및 옵션)가 포함된 문서 배열 을 반환합니다. 결과는 사용자의 권한 에 따라 달라집니다. 자세한 내용은 필수 액세스를 참조하세요.
db.getCollectionInfos()
헬퍼는listCollections
명령을 래핑합니다.db.getCollectionInfos()
메서드에는 다음과 같은 선택적 매개 변수가 있습니다.Parameter유형설명filter
문서선택 사항. 컬렉션 목록을 필터링하는 쿼리 조건입니다.
db.getCollectionInfos()
에서 반환된 모든 필드에 쿼리 조건을 지정할 수 있습니다.nameOnly
부울선택 사항. 명령이 이름과 유형(
view
,collection
또는timeseries
)만 반환할지, 아니면 이름과 기타 정보를 모두 반환할지를 나타내는 플래그입니다.기본값은
false
입니다.nameOnly
이(가)true
이면filter
표현식이 컬렉션의 이름과 유형에 따라서만 필터링을 할 수 있습니다. 다른 필드는 사용할 수 없습니다.authorizedCollections
부울선택 사항.
true
(으)로 설정되었으며nameOnly: true
와(과) 함께 사용할 경우 필수 권한(예: 데이터베이스를 대상으로 한listCollections
작업)이 없는 사용자를 허용하도록 액세스 제어 적용 시 명령을 실행하는 플래그입니다.authorizedCollections
옵션과nameOnly
옵션 둘 다 true(참)로 설정된 경우에는 이 명령이 사용자에게 권한이 있는 컬렉션만 반환합니다. 그 예로 사용자에게 특정 컬렉션에 대한find
작업이 있는 경우, 이 명령은 해당 컬렉션만 반환합니다. 아니면 사용자에게 데이터베이스 리소스에 대한find
작업 또는 기타 어떤 작업이든 있는 경우, 이 명령은 데이터베이스의 모든 컬렉션을 나열합니다.기본값은
false
입니다. 다시 말해서, 이 명령을 실행하려면 사용자에게 데이터베이스에 대한listCollections
작업이 있어야 합니다.데이터베이스에 대해
listCollections
작업이 있는 사용자의 경우 사용자가 데이터베이스의 컬렉션을 나열할 권한이 있으므로 이 옵션은 적용되지 않습니다.이 옵션을
nameOnly: true
없이 사용하면 어떤 효과도 발생하지 않습니다. 다시 말해서, 사용자에게는 액세스 제어 적용 시 이 명령을 실행하는 데 필요한 권한이 있어야 합니다. 그렇지 않으면 사용자의 명령 실행이 허용되지 않습니다.
필요한 액세스 권한
db.getCollectionInfos()
는 listCollections
에 적용되는 래퍼(wrapper)입니다. 따라서 액세스 제어를 시행할 경우 사용자는 listCollections
와 동일한 권한을 보유해야 합니다.
listCollections
명령은 액세스 제어가 시행될 경우 listCollections
작업을 수행해야 합니다. 사용자는 데이터베이스에 대한 listCollections
작업을 부여할 수 있는 권한이 있어야 listCollections
을(를) 실행할 수 있습니다.
예를 들어, 다음 명령은 test
데이터베이스에 대해 db.getCollectionInfos()
를 실행할 수 있는 권한을 부여합니다.
{ resource: { db: "test", collection: "" }, actions: [ "listCollections" ] }
기본 제공 역할 read
은(는) 특정 데이터베이스에 대해 listCollections
을(를) 실행할 수 있는 권한을 제공합니다.
필수 read
권한이 없는 사용자는 authorizedCollections
및 nameOnly
이(가) 둘 다 true
(으)로 설정된 경우 listCollections
을(를) 실행할 수 있습니다. 이 경우 이 명령은 사용자에게 권한이 있는 컬렉션의 이름과 유형을 반환합니다.
그 예로 다음의 find
권한을 부여하는 역할이 있는 사용자를 생각해 보세요.
{ resource: { db: "sales", collection: "currentQuarter" }, actions: [ "find" ] }
authorizedCollections
및 nameOnly
이(가) 둘 다 true
(으)로 설정된 경우에는 사용자가 listCollections
을(를) 실행할 수 있습니다.
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
이 연산은 currentQuarter
컬렉션의 이름과 유형을 반환합니다.
단, 사용자에게 필수 액세스 권한이 없으면 다음 연산에서 오류가 반환됩니다.
db.runCommand( { listCollections: 1.0, authorizedCollections: true } ) db.runCommand( { listCollections: 1.0, nameOnly: true } )
show collections
mongosh
메서드인 show collections
은(는) 다음 항목과 유사합니다.
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
필수 액세스 권한이 있는 사용자의 경우,
show collections
은(는) 해당 데이터베이스의 시스템 외 컬렉션을 나열합니다.필수 액세스 권한이 없는 사용자의 경우,
show collections
은(는) 사용자에게 권한이 있는 컬렉션만 나열합니다.
행동
클라이언트 연결 해제
MongoDB 4.2부터 db.getCollectionInfos()
를 발급한 클라이언트가 작업이 완료되기 전에 연결을 끊는 경우, MongoDB는 db.getCollectionInfos()
를 사용하여 를killOp
을 종료로 표시합니다.
복제본 세트 구성원 국가 제한
복제본 세트 노드에서 실행하는 경우 listCollections
연산을 수행하려면 노드가 PRIMARY
또는 SECONDARY
상태여야 합니다. 노드가 STARTUP2
와 같은 다른 상태이면 연산 오류가 발생합니다.
예시
다음 항목은 example
데이터베이스의 모든 컬렉션에 대한 정보를 반환합니다.
use example db.getCollectionInfos()
이 메서드는 컬렉션 정보가 포함된 문서의 배열을 반환합니다.
[ { "name" : "employees", "type" : "collection", "options" : { "flags" : 1, "validator" : { "$or" : [ { "phone" : { "$exists" : true } }, { "email" : { "$exists" : true } } ] } }, "info" : { "readOnly" : false, "uuid" : UUID("222e18ca-4a10-4a42-a8fe-c39255cc4c55") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.employees" } }, { "name" : "products", "type" : "collection", "options" : { "flags" : 1 }, "info" : { "readOnly" : false, "uuid" : UUID("1bc898b2-3b91-45e4-9d8b-0be462d5a157") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.products" } }, { "name" : "mylogs", "type" : "collection", "options" : { "capped" : true, "size" : 256 }, "info" : { "readOnly" : true, "uuid" : UUID("8e62116d-b6a0-490a-808c-258ccb7ea947") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.mylogs" } } ]
특정 컬렉션에 대한 컬렉션 정보를 요청하려면 메서드 호출 시 컬렉션 이름을 다음과 같이 지정하세요.
use example db.getCollectionInfos( { name: "employees" } )
이 메서드는 example
데이터베이스의 employees
컬렉션에 대한 컬렉션 정보를 자세히 설명하는 단일 문서가 포함된 배열을 반환합니다.
[ { "name" : "employees", "type" : "collection", "options" : { "flags" : 1, "validator" : { "$or" : [ { "phone" : { "$exists" : true } }, { "email" : { "$exists" : true } } ] } }, "info" : { "readOnly" : false, "uuid" : UUID("222e18ca-4a10-4a42-a8fe-c39255cc4c55") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.employees" } } ]
db.getCollectionInfos()
에서 반환된 모든 필드에 필터하다 를 지정할 수 있습니다.
그 예로 다음 명령은 info.readOnly
이(가) true
인 example
데이터베이스의 모든 컬렉션에 대한 정보를 반환합니다.
use example db.getCollectionInfos( { "info.readOnly" : true } )
이 명령은 다음 항목을 반환합니다.
[ { "name" : "mylogs", "type" : "collection", "options" : { "capped" : true, "size" : 256 }, "info" : { "readOnly" : true, "uuid" : UUID("8e62116d-b6a0-490a-808c-258ccb7ea947") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.mylogs" } } ]