Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 'show dbs'에 해당하는 BSON 쿼리 실행 방법 (listDatabases)

MongoDB 셸에서 show dbs 명령은 데이터베이스 목록을 간편하게 확인할 수 있는 헬퍼(helper) 명령입니다. 하지만 내부적으로 이 명령은 BSON 형식의 listDatabases 커맨드로 변환되어 서버에 전달됩니다. 드라이버나 스크립트 환경에서 직접 데이터베이스 목록을 조회해야 한다면 db.runCommand() 메서드를 사용하면 됩니다.

1단계: admin 데이터베이스로 전환

listDatabases 커맨드는 admin 데이터베이스에서 실행하는 것이 일반적입니다. 먼저 아래와 같이 admin 데이터베이스로 전환합니다.

> use admin
switched to db admin

2단계: runCommand로 listDatabases 실행

이제 다음과 같이 db.runCommand(){ listDatabases : 1 } 문서를 전달하여 명령을 실행합니다.

> db.runCommand({listDatabases : 1})

실행 결과 예시

명령을 실행하면 서버에 존재하는 모든 데이터베이스의 이름(name), 디스크 사용량(sizeOnDisk), 빈 데이터베이스 여부(empty) 정보가 배열 형태로 반환됩니다.

{
    "databases" : [
        {
            "name" : "admin",
            "sizeOnDisk" : 2375680,
            "empty" : false
        },
        {
            "name" : "app",
            "sizeOnDisk" : 32768,
            "empty" : false
        },
        {
            "name" : "business",
            "sizeOnDisk" : 417792,
            "empty" : false
        },
        {
            "name" : "config",
            "sizeOnDisk" : 106496,
            "empty" : false
        },
        {
            "name" : "local",
            "sizeOnDisk" : 81920,
            "empty" : false
        },
        {
            "name" : "main",
            "sizeOnDisk" : 184320,
            "empty" : false
        },
        {
            "name" : "my",
            "sizeOnDisk" : 753664,
            "empty" : false
        },
        {
            "name" : "ok",
            "sizeOnDisk" : 1024000,
            "empty" : false
        },
        {
            "name" : "sample",
            "sizeOnDisk" : 3297280,
            "empty" : false
        },
        {
            "name" : "sampleDemo",
            "sizeOnDisk" : 352256,
            "empty" : false
        },
        {
            "name" : "studentSearch",
            "sizeOnDisk" : 262144,
            "empty" : false
        },
        {
            "name" : "test",
            "sizeOnDisk" : 32944128,
            "empty" : false
        },
        {
            "name" : "university",
            "sizeOnDisk" : 229376,
            "empty" : false
        },
        {
            "name" : "web",
            "sizeOnDisk" : 3661824,
            "empty" : false
        },
        {
            "name" : "webcustomertracker",
            "sizeOnDisk" : 32768,
            "empty" : false
        }
    ],
    "totalSize" : 45756416,
    "ok" : 1
}

결과 필드 설명

  • databases: 각 데이터베이스의 정보가 담긴 배열입니다.
  • name: 데이터베이스의 이름입니다.
  • sizeOnDisk: 해당 데이터베이스가 디스크에서 차지하는 용량(바이트 단위)입니다.
  • empty: 데이터베이스가 비어 있는지 여부를 나타냅니다.
  • totalSize: 전체 데이터베이스의 총 디스크 사용량(바이트 단위)입니다.
  • ok: 명령이 성공적으로 실행되었음을 의미합니다(1 = 성공).

참고: nameOnly 옵션으로 결과 경량화하기

데이터베이스 이름만 필요하고 용량 정보가 불필요한 경우에는 nameOnly 옵션을 활용할 수 있습니다. 이 옵션을 사용하면 응답 크기를 줄여 더 빠르게 목록을 조회할 수 있습니다.

> db.runCommand({ listDatabases: 1, nameOnly: true })

이처럼 db.runCommand({ listDatabases : 1 })는 MongoDB 셸의 show dbs 명령과 동일한 역할을 수행하는 BSON 쿼리이며, 프로그래밍 방식으로 데이터베이스 목록을 조회할 때 유용하게 활용됩니다.