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

MongoDB 셸에서 모든 데이터베이스를 조회하고 조작하는 방법

MongoDB 셸에서 모든 데이터베이스를 다루는 방법

MongoDB 셸(mongo shell)에서 서버에 존재하는 모든 데이터베이스를 한 번에 조회하고 조작하려면 adminCommand() 메서드와 함께 listDatabases 명령을 사용하면 됩니다. 이 조합을 활용하면 현재 MongoDB 인스턴스에 등록된 데이터베이스의 이름, 디스크 사용량, 빈 데이터베이스 여부 등의 정보를 손쉽게 확인할 수 있습니다.

아래에서 예시 데이터베이스 "test"를 기준으로 단계별로 살펴보겠습니다.

1단계: 현재 사용 중인 데이터베이스 확인

먼저 db 명령을 입력해 현재 접속되어 있는 데이터베이스가 무엇인지 확인합니다.

> db;

명령을 실행하면 현재 사용 중인 데이터베이스 이름이 다음과 같이 출력됩니다.

Test

2단계: listDatabases 명령으로 전체 데이터베이스 목록 가져오기

Mongo 셸에서 모든 데이터베이스를 대상으로 작업하려면 아래 쿼리처럼 adminCommand()'listDatabases'를 전달하고, 그 결과를 변수에 저장합니다.

> var allDatabaseList = db.adminCommand('listDatabases');

이렇게 하면 전체 데이터베이스 정보가 allDatabaseList 변수에 담기게 됩니다.

3단계: printjson()으로 결과 출력하기

변수에 저장된 내용을 사람이 읽기 좋은 JSON 형태로 출력하려면 printjson() 함수를 사용합니다.

> printjson(allDatabaseList);

실행 결과는 다음과 같습니다.

{
    "databases" : [
       {
          "name" : "admin",
          "sizeOnDisk" : 495616,
          "empty" : false
       },
       {
          "name" : "config",
          "sizeOnDisk" : 98304,
          "empty" : false
       },
       {
          "name" : "local",
          "sizeOnDisk" : 73728,
          "empty" : false
       },
       {
          "name" : "sample",
          "sizeOnDisk" : 1388544,
          "empty" : false
       },
       {
          "name" : "sampleDemo",
          "sizeOnDisk" : 278528,
          "empty" : false
       },
       {
          "name" : "studentSearch",
          "sizeOnDisk" : 262144,
          "empty" : false
       },
       {
          "name" : "test",
          "sizeOnDisk" : 9695232,
          "empty" : false
       }
    ],
    "totalSize" : 12292096,
    "ok" : 1
}

출력 결과 해석

  • databases: 각 데이터베이스의 상세 정보를 담고 있는 배열입니다.
  • name: 데이터베이스 이름입니다. admin, config, local은 MongoDB가 내부적으로 사용하는 시스템 데이터베이스입니다.
  • sizeOnDisk: 해당 데이터베이스가 디스크에서 차지하는 크기(바이트)입니다.
  • empty: 데이터베이스가 비어 있는지 여부를 나타냅니다(false면 데이터가 존재).
  • totalSize: 모든 데이터베이스가 차지하는 총 디스크 크기(바이트)입니다.
  • ok: 명령 실행 성공 여부로, 1이면 정상적으로 처리된 것입니다.

참고로 데이터베이스 목록만 간단히 확인하고 싶다면 show dbs 명령어를 사용할 수도 있습니다. 다만 프로그래밍 방식으로 결과를 변수에 담아 후속 작업을 처리하려면 위에서 소개한 db.adminCommand('listDatabases') 방식이 훨씬 유용합니다.