문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

listCollections (영문)

이 페이지의 내용

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

데이터베이스의 컬렉션 및 에 대한 이름 및 만들기 옵션을 포함한 정보를 조회합니다.

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

mongoshdb.getCollectionInfos()db.getCollectionNames() 헬퍼 메서드를 제공합니다.

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

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

참고

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

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

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

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

필드
유형
설명
filter
문서

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

listCollections에서 반환된 모든 필드 에 쿼리 표현식을 지정할 수 있습니다.

nameOnly
부울

선택 사항. 명령이 컬렉션/뷰 이름과 유형만 반환해야 하는지, 아니면 이름과 기타 정보를 모두 반환해야 하는지 여부를 나타내는 플래그입니다.

이름과 유형(view 또는 collection)만 반환하면 컬렉션 레벨 잠금이 적용되지 않지만, 전체 컬렉션 정보를 반환하면 데이터베이스의 각 컬렉션이 잠깁니다.

기본값은 false입니다.

참고

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

authorizedCollections
부울

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

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

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

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

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

comment
어떤

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

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

참고

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

필터를 사용하여 listCollections 의 결과를 제한합니다.filter 결과 listCollections 세트에 반환된 모든 필드 에 를 지정할 수 있습니다.

listCollections 잠금 동작:

  • MongoDB 5.0 이전 버전에서는 listCollections가 데이터베이스에서 인텐트 공유 잠금을 보유하고 있을 때 listCollections가 데이터베이스의 각 컬렉션에 대한 인텐트 공유 잠금을 수행합니다.

  • MongoDB 5.0부터 listCollections는 컬렉션 또는 데이터베이스에서 의도 공유 잠금을 사용하지 않습니다. listCollections는 컬렉션에 대한 배타적 쓰기 잠금을 보유한 에 의해 차단되지 않습니다.

잠금에 대한 자세한 내용은 FAQ: 동시성을 참조하세요.

MongoDB 4 부터 시작.2, listCollections 를 발행한 클라이언트가 작업이 완료되기 전에 연결이 끊어지면 MongoDB는killOp를 사용하여 { listCollections 를 종료로 표시합니다

복제본 세트 멤버에서 실행하려면 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 , 의 경우 view , time series 컬렉션의 경우 timeseries 를 반환합니다.
옵션
문서

컬렉션 옵션.

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

정보
문서

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

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

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

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

데이터베이스의 컬렉션을 나열하려면 내장된 mongosh 명령인 컬렉션 표시를 사용할 수 있습니다.

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