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

listCollections (영문)

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 명령 필드
  • 행동
  • 필요한 액세스 권한
  • 출력
  • 예시
  • 자세히 알아보기
listCollections

데이터베이스 의 컬렉션 및 에 대한 이름 및 생성 옵션을 포함한 정보를 검색합니다.

listCollections 명령은 컬렉션에 커서를 만드는 데 사용할 수 있는 정보가 포함된 문서를 반환합니다.

mongosh(은)는 db.getCollectionInfos()db.getCollectionNames() 도우미 메서드를 제공합니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

참고

이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.

명령은 다음과 같은 구문을 가집니다:

db.runCommand(
{
listCollections: 1,
filter: <document>,
nameOnly: <boolean>,
authorizedCollections: <boolean>,
comment: <any>
}
)

이 명령은 다음과 같은 선택적 필드를 사용할 수 있습니다.

필드
유형
설명
filter
문서

선택 사항. 컬렉션 목록을 필터링하는 쿼리 표현식입니다.

listCollections반환되는 필드 중 어디에든 쿼리 표현식을 지정할 수 있습니다.

nameOnly
부울

선택 사항. 명령이 이름과 유형(view, collection 또는 timeseries)만 반환할지, 아니면 이름과 기타 정보를 모두 반환할지를 나타내는 플래그입니다.

기본값은 false입니다.

nameOnly이(가) true이면 filter 표현식이 컬렉션의 이름과 유형에 따라서만 필터링을 할 수 있습니다. 다른 필드는 사용할 수 없습니다.

authorizedCollections
부울

선택 사항. true(으)로 설정되었으며 nameOnly: true와(과) 함께 사용할 경우 필수 권한(예: 데이터베이스를 대상으로 한 listCollections 작업)이 없는 사용자를 허용하도록 액세스 제어 적용 시 명령을 실행하는 플래그입니다.

authorizedCollections 옵션과 nameOnly 옵션 둘 다 true(참)로 설정된 경우에는 이 명령이 사용자에게 권한이 있는 컬렉션만 반환합니다. 그 예로 사용자에게 특정 컬렉션에 대한 find 작업이 있는 경우, 이 명령은 해당 컬렉션만 반환합니다. 아니면 사용자에게 데이터베이스 리소스에 대한 find 작업 또는 기타 어떤 작업이든 있는 경우, 이 명령은 데이터베이스의 모든 컬렉션을 나열합니다.

기본값은 false입니다. 다시 말해서, 이 명령을 실행하려면 사용자에게 데이터베이스에 대한 listCollections 작업이 있어야 합니다.

데이터베이스에 대해 listCollections 작업이 있는 사용자의 경우 사용자가 데이터베이스의 컬렉션을 나열할 권한이 있으므로 이 옵션은 적용되지 않습니다.

이 옵션을 nameOnly: true 없이 사용하면 어떤 효과도 발생하지 않습니다. 다시 말해서, 사용자에게는 액세스 제어 적용 시 이 명령을 실행하는 데 필요한 권한이 있어야 합니다. 그렇지 않으면 사용자의 명령 실행이 허용되지 않습니다.

comment
any

선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.

listCollections 명령에 설정된 모든 주석은 listCollections 커서에서 실행되는 후속 getMore 명령에 의해 상속됩니다.

필터를 사용하여 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 권한이 없는 사용자는 authorizedCollectionsnameOnly이(가) 둘 다 true(으)로 설정된 경우 listCollections을(를) 실행할 수 있습니다. 이 경우 이 명령은 사용자에게 권한이 있는 컬렉션의 이름과 유형을 반환합니다.

그 예로 다음의 find 권한을 부여하는 역할이 있는 사용자를 생각해 보세요.

{ resource: { db: "sales", collection: "currentQuarter" }, actions: [ "find" ] }

authorizedCollectionsnameOnly이(가) 둘 다 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
}
)

mongosh 메서드인 show collections은(는) 다음 항목과 유사합니다.

db.runCommand(
{
listCollections: 1.0,
authorizedCollections: true,
nameOnly: true
}
)
  • 필수 액세스 권한이 있는 사용자의 경우, show collections은(는) 해당 데이터베이스의 시스템 외 컬렉션을 나열합니다.

  • 필수 액세스 권한이 없는 사용자의 경우, show collections은(는) 사용자에게 권한이 있는 컬렉션만 나열합니다.

listCollections.cursor

컬렉션 이름 및 옵션이 포함된 문서에 커서를 생성하는 데 사용할 수 있는 정보가 들어 있는 문서입니다. 커서 정보에는 커서 ID, 명령의 전체 네임스페이스 및 첫 번째 결과 배치가 포함됩니다. 배치 출력의 각 문서에는 다음 필드가 포함되어 있습니다:

필드
유형
설명
이름
문자열
컬렉션의 이름입니다.
유형
문자열
데이터 저장소 유형입니다. 컬렉션에 대한 collection, 에 대한 viewtime series 컬렉션에 대한 timeseries을 반환합니다.
옵션
문서

컬렉션 옵션.

이러한 옵션은 db.createCollection()에서 사용할 수 있는 옵션에 직접 해당합니다. 옵션에 대한 설명은 db.createCollection()을 참조하세요.

정보
문서

컬렉션과 관련된 다음 필드를 나열합니다.

읽기 전용
booleantrue인 경우 데이터 저장소는 읽기 전용입니다.
uuid
UUID. 일단 설정되면 컬렉션 UUID는 변경되지 않습니다. 컬렉션 UUID는 샤딩된 클러스터의 복제본 세트 멤버와 샤드 전체에서 동일하게 유지됩니다.
idIndex
문서
컬렉션의 _id 인덱스에 대한 정보를 제공합니다.
listCollections.ok

명령의 반환 값입니다. 값이 1이면 성공입니다.

music 데이터베이스에는motorhead, taylorSwiftramones의 세 컬렉션이 포함되어 있습니다.

데이터베이스의 컬렉션을 나열할 때는 내장 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
}

컬렉션 옵션의 경우:

컬렉션 정보의 경우:

돌아가기

killOp