listCollections (영문)
정의
listCollections
데이터베이스 의 컬렉션 및 뷰 에 대한 이름 및 생성 옵션을 포함한 정보를 검색합니다.
listCollections
명령은 컬렉션에 커서를 만드는 데 사용할 수 있는 정보가 포함된 문서를 반환합니다.mongosh
(은)는db.getCollectionInfos()
및db.getCollectionNames()
도우미 메서드를 제공합니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
참고
이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
명령은 다음과 같은 구문을 가집니다:
db.runCommand( { listCollections: 1, filter: <document>, nameOnly: <boolean>, authorizedCollections: <boolean>, comment: <any> } )
명령 필드
이 명령은 다음과 같은 선택적 필드를 사용할 수 있습니다.
필드 | 유형 | 설명 |
---|---|---|
filter | 문서 | 선택 사항. 컬렉션 목록을 필터링하는 쿼리 표현식입니다.
|
nameOnly | 부울 | 선택 사항. 명령이 이름과 유형( 기본값은
|
authorizedCollections | 부울 | 선택 사항.
기본값은 데이터베이스에 대해 이 옵션을 |
comment | any | 선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.
댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.
|
행동
필터
필터를 사용하여 listCollections
의 결과를 제한합니다. filter
결과 집합의 반환된 필드에 listCollections
를 지정할 수 있습니다.
잠금
listCollections
락 동작:
MongoDB 5.0 이전 버전에서는
listCollections
가 데이터베이스에서 인텐트 공유 잠금을 보유하고 있을 때listCollections
가 데이터베이스의 각 컬렉션에 대한 인텐트 공유 잠금을 수행합니다.MongoDB 5.0부터
listCollections
는 컬렉션 또는 데이터베이스에서 의도 공유 잠금을 사용하지 않습니다.listCollections
는 컬렉션에 대한 배타 쓰기 잠금(write lock)을 보유한 에 의해 차단되지 않습니다.
잠금에 대해 알아보려면 MongoDB는 어떤 유형의 잠금을 사용하나요?를참조하세요.
클라이언트 연결 해제
MongoDB 4.2부터 listCollections
를 발급한 클라이언트가 작업이 완료되기 전에 연결을 끊는 경우, MongoDB는 listCollections
를 사용하여 를killOp
을 종료로 표시합니다.
복제본 세트 구성원 국가 제한
복제본 세트 노드에서 실행하는 경우 listCollections
작업을 수행하려면 해당 노드가 PRIMARY
또는 SECONDARY
상태에 있어야 합니다. 노드가 STARTUP2
와 같은 다른 상태에 있으면 작업 오류가 발생합니다.
필요한 액세스 권한
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
은(는) 사용자에게 권한이 있는 컬렉션만 나열합니다.
출력
listCollections.cursor
컬렉션 이름 및 옵션이 포함된 문서에 커서를 생성하는 데 사용할 수 있는 정보가 들어 있는 문서입니다. 커서 정보에는 커서 ID, 명령의 전체 네임스페이스 및 첫 번째 결과 배치가 포함됩니다. 배치 출력의 각 문서에는 다음 필드가 포함되어 있습니다:
필드유형설명이름문자열컬렉션의 이름입니다.유형문자열옵션문서컬렉션 옵션.
이러한 옵션은
db.createCollection()
에서 사용할 수 있는 옵션에 직접 해당합니다. 옵션에 대한 설명은db.createCollection()
을 참조하세요.정보문서컬렉션과 관련된 다음 필드를 나열합니다.
- 읽기 전용
boolean
true
인 경우 데이터 저장소는 읽기 전용입니다.- uuid
- UUID. 일단 설정되면 컬렉션 UUID는 변경되지 않습니다. 컬렉션 UUID는 샤딩된 클러스터의 복제본 세트 멤버와 샤드 전체에서 동일하게 유지됩니다.
idIndex문서컬렉션의_id
인덱스에 대한 정보를 제공합니다.
예시
모든 컬렉션 나열
music
데이터베이스에는motorhead
, taylorSwift
및 ramones
의 세 컬렉션이 포함되어 있습니다.
데이터베이스의 컬렉션을 나열할 때는 내장 mongosh
명령인 show collections를 사용할 수 있습니다.
show collections
출력은 다음과 같습니다:
motorhead ramones taylorSwift
listCollections
컬렉션 명령을 사용하여 유사한 목록을 가져오려면 nameOnly
옵션을 사용합니다.
db.runCommand( { listCollections: 1.0, nameOnly: true } )
출력은 다음과 같습니다:
{ cursor: { id: Long("0"), ns: 'music.$cmd.listCollections', firstBatch: [ { name: 'motorhead', type: 'collection' }, { name: 'taylorSwift', type: 'collection' }, { name: 'ramones', type: 'collection' } ] }, ok: 1 }
더 자세한 정보를 보려면 nameOnly
옵션을 제거하세요.
db.runCommand( { listCollections: 1.0 } )
출력은 다음과 같습니다:
{ cursor: { id: Long("0"), ns: 'music.$cmd.listCollections', firstBatch: [ { name: 'motorhead', type: 'collection', options: {}, info: { readOnly: false, uuid: new UUID("09ef1858-2831-47d2-a3a7-9a29a9cfeb94") }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'taylorSwift', type: 'collection', options: {}, info: { readOnly: false, uuid: new UUID("6c46c8b9-4999-4213-bcef-9a36b0cff228") }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'ramones', type: 'collection', options: {}, info: { readOnly: false, uuid: new UUID("7e1925ba-f2f9-4e42-90e4-8cafd434a6c4") }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } } ] }, ok: 1 }
자세히 알아보기
컬렉션 옵션의 경우:
컬렉션 정보의 경우: