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

JavaScript 배열로 MongoDB 데이터베이스 목록 가져오는 방법

MongoDB에 존재하는 전체 데이터베이스 목록을 JavaScript 배열 형태로 가져오고 싶다면 runCommand() 메서드를 활용하면 됩니다. 이 메서드에 { listDatabases: 1 } 명령을 전달하면 서버의 모든 데이터베이스에 대한 이름, 디스크 사용량 등 상세 정보를 한 번에 조회할 수 있습니다.

참고로 listDatabases 명령은 관리 권한이 필요하므로 반드시 admin 데이터베이스에서 실행해야 합니다.

1단계: listDatabases 명령 실행하기

먼저 admin 데이터베이스로 전환한 뒤 runCommand()를 실행합니다.

> use admin;
switched to db admin
> allDatabasesDetails = db.runCommand({listDatabases: 1});

2단계: 실행 결과 확인하기

위 명령을 실행하면 다음과 같이 각 데이터베이스의 이름(name), 디스크 사용 크기(sizeOnDisk), 빈 데이터베이스 여부(empty) 정보가 담긴 결과를 확인할 수 있습니다.

{
    "databases" : [
       {
           "name" : "admin",
           "sizeOnDisk" : 847872,
           "empty" : false
       },
       {
           "name" : "config",
           "sizeOnDisk" : 98304,
           "empty" : false
       },
       {
           "name" : "local",
           "sizeOnDisk" : 73728,
           "empty" : false
       },
       {
           "name" : "sample",
           "sizeOnDisk" : 1273856,
           "empty" : false
       },
       {
           "name" : "sampleDemo",
           "sizeOnDisk" : 352256,
           "empty" : false
       },
       {
           "name" : "studentSearch",
           "sizeOnDisk" : 262144,
           "empty" : false
       },
       {
           "name" : "test",
           "sizeOnDisk" : 9527296,
           "empty" : false
       }
    ],
    "totalSize" : 12435456,
    "ok" : 1
}

3단계: 데이터베이스 이름만 배열로 추출하기

조회된 결과 객체의 databases 배열을 반복문으로 순회하면서 이름 값만 새로운 배열에 담으면 됩니다.

> allDatabaseName = []
[ ]
> for (var j in allDatabasesDetails.databases) { allDatabaseName.push(allDatabasesDetails.databases[j].name) }

반복문이 정상적으로 완료되면 다음과 같이 처리된 데이터베이스의 개수가 출력됩니다.

7

이제 allDatabaseName 배열에는 "admin", "config", "local", "sample", "sampleDemo", "studentSearch", "test"와 같이 각 데이터베이스의 이름이 순서대로 저장됩니다. 이렇게 만든 배열은 특정 데이터베이스 검색, 목록 필터링, 애플리케이션 내 동적 처리 등 다양한 후속 작업에 활용할 수 있습니다.