문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

db.getCollectionInfos()

이 페이지의 내용

  • 정의
  • 필요한 액세스 권한
  • 행동
  • 예제
db.getCollectionInfos(filter, nameOnly, authorizedCollections)

현재 데이터베이스에 대한 컬렉션 또는 보기 정보(예: 이름 및 옵션)가 포함된 문서 배열을 반환합니다. 결과는 사용자의 권한에 따라 달라집니다. 자세한 내용은 필수 액세스를 참조하세요.

db.getCollectionInfos() 헬퍼는 listCollections 명령을 래핑합니다.

db.getCollectionInfos() 메서드에는 다음과 같은 선택적 매개 변수가 있습니다.

매개 변수
유형
설명
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에 적용되는 래퍼입니다. 따라서 액세스 제어를 시행할 경우 사용자는 listCollections와 동일한 권한을 보유해야 합니다.

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은(는) 사용자에게 권한이 있는 컬렉션만 나열합니다.

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이(가) trueexample 데이터베이스의 모든 컬렉션에 대한 정보를 반환합니다.

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"
}
}
]
← db.getCollection()