웹사이트 검색

Rocky Linux 9에서 MongoDB NoSQL 데이터베이스를 설치하고 사용하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 록키 리눅스 9
  • 록키 리눅스 8.4

이 페이지에서

  1. 전제 조건
  2. MongoDB 저장소 추가
  3. MongoDB 서버 및 Mongosh 설치
  4. 시스템 설정
  5. MongoDB용 관리자 설정
  6. MongoDB에서 사용자 및 데이터베이스 생성
  7. MongoDB에 데이터 삽입 및 쿼리
  8. MongoDB에서 데이터 업데이트
  9. MongoDB에서 데이터 삭제
  10. 결론

MongoDB는 오픈 소스, 교차 플랫폼 및 분산 NoSQL(비SQL 또는 비관계형) 데이터베이스 시스템입니다. 기존 SQL 데이터베이스와 같은 테이블에 데이터를 저장하는 대신 MongoDB는 유연한 문서를 사용하여 다양한 데이터 형식을 저장합니다. MongoDB는 바이너리 JSON 형식인 BSON 형식을 사용하여 데이터를 저장합니다.

MongoDB는 내장된 고가용성, 자동 장애 조치 및 데이터 중복성, 분산 클러스터 간 샤딩을 통한 수평 확장 기능을 갖춘 분산 NoSQL 데이터베이스이며 다중 지역 지리적 배포를 지원합니다. MongoDB는 또한 CRUD 작업(읽기 및 쓰기), 데이터 집계 파이프라인, 텍스트 검색 및 지리 공간 쿼리를 지원하는 쿼리 API를 제공합니다.

MongoDB를 사용하는 유명한 회사로는 Forbes, Toyota, SEGA, EA, Vodafone, Verizon 등이 있습니다.

이 튜토리얼에서는 Rocky Linux 9 서버에 MongoDB NoSQL 데이터베이스를 설치합니다. 또한 MongoDB 서버 배포를 위해 Linux 시스템을 최적화하는 방법도 배웁니다. 이 자습서의 끝에서 MongoDB 데이터베이스 서버의 기본 쿼리도 학습합니다.

이 가이드를 완료하면 MongoDB를 설치하고 사용자 관리, 데이터베이스 생성, MongoDB에서 데이터 삽입 및 검색, MongoDB에서 데이터 업데이트, MongoDB 서버에서 데이터 제거 방법과 같은 기본적인 MongoDB 작업을 배우게 됩니다.

전제 조건

이 자습서를 완료하려면 다음 요구 사항이 있어야 합니다.

  • Rocky Linux 9 서버 - 이 예에서는 호스트 이름이 mongodb-rocky인 Rocky Linux를 사용합니다.\n
  • sudo/root 관리자 권한이 있는 루트가 아닌 사용자.\n

Rocky Linux가 준비되었으므로 이제 시작할 준비가 되었습니다.

MongoDB 리포지토리 추가

MongoDB는 공식 MongoDB 리포지토리에서만 사용할 수 있습니다. 설치하려면 시스템에 MongoDB 리포지토리를 추가해야 합니다. 이 글을 쓰는 시점에서 MongoDB의 최신 버전은 v6.0이며 이 가이드의 나머지 부분에서 사용할 것입니다.

첫 번째 단계에서는 공식 MongoDB 리포지토리를 Rocky Linux 시스템에 추가합니다.

시작하려면 아래의 nano 편집기 명령을 사용하여 새 리포지토리 파일 /etc/yum.repos.d/mongodb-org-6.0.repo를 만듭니다.

sudo nano /etc/yum.repos.d/mongodb-org-6.0.repo

MongoDB 6.0 리포지토리의 다음 줄을 파일에 추가합니다.

[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

파일을 저장하고 완료되면 편집기를 종료합니다.

이제 아래 dnf 명령을 실행하여 Rocky Linux 시스템의 리포지토리 목록을 확인하십시오.

sudo dnf repolist

다음과 같은 출력을 받게 됩니다. MongoDB 6.0 리포지토리가 Rocky Linux 시스템에 추가됩니다.

MongoDB 리포지토리가 시스템에 추가되면 다음으로 MongoDB 설치를 시작합니다.

MongoDB 서버 및 Mongosh 설치

이 단계에서는 Rocky Linux 서버에 MongoDB 서버를 설치합니다. 그런 다음 부팅 시 자동으로 실행되도록 MongoDB 서비스를 시작하고 활성화합니다.

아래 dnf 명령을 실행하여 MongoDB 패키지를 설치합니다. mongodb-org는 MongoDB 서버의 기본 패키지이고 mongodb-mongosh는 클라이언트 mongo의 대안인 MongoDB 클라이언트의 새 버전입니다.

sudo dnf install mongodb-org mongodb-mongosh

메시지가 표시되면 y를 입력하여 확인하고 ENTER를 눌러 계속 진행합니다.

또한 MongoDB의 GPG 키를 수락하라는 메시지가 표시됩니다. y를 입력하고 ENTER를 눌러 확인합니다.

MongoDB 서버가 설치된 후 아래 systemctl 명령 유틸리티를 실행하여 MongoDB 서비스를 시작하고 서비스가 실행 중인지 확인합니다.

sudo systemctl start mongod
sudo systemctl status mongod

아래 스크린샷과 같은 출력이 표시되어야 합니다. MongoDB 서비스가 실행 중이고 활성화되어 있습니다. MongoDB 서비스는 부팅 시 자동으로 실행됩니다.

이제 MongoDB 서버가 실행 중이므로 다음 단계에서 MongoDB 배포를 위해 Rocky Linux 시스템을 설정하고 최적화합니다.

시스템 설정

이 단계에서는 Rocky Linux 서버를 설정하고 MongoDB 배포를 위해 최적화합니다. 여기에는 THP(Transparent Huge Pages) 비활성화, ulimit 증가 및 sysctl.conf 파일을 통한 최대 가상 메모리 증가가 포함됩니다.

다른 방법을 사용하여 THP(Transparent Huge Pages)를 비활성화할 수 있습니다. 이 가이드에서는 systemd 서비스를 통해 THP를 영구적으로 비활성화합니다.

아래 nano 편집기 명령을 사용하여 새 시스템 서비스 파일 /etc/systemd/system/disable-thp.service를 만듭니다.

sudo nano /etc/systemd/system/disable-thp.service

파일에 다음 줄을 추가합니다.

[Unit]
Description=Disable Transparent Huge Pages (THP)

[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

파일을 저장하고 편집기를 종료합니다.

다음으로 아래 systemctl 명령 유틸리티를 실행하여 systemd 관리자를 다시 로드하고 새 서비스 파일을 적용합니다.

sudo systemctl daemon-reload

그런 다음 아래 systemctl 명령을 사용하여 systemd 서비스 disable-thp를 시작하고 활성화합니다.

sudo systemctl enable disable-thp
sudo systemctl start disable-thp

disable-thp 서비스를 활성화하면 THP(Transparent Huge Pages)가 부팅할 때마다 자동으로 비활성화됩니다.

다음으로 MongoDB 배포를 위해 시스템의 ulimit를 늘립니다. 일반 Linux 시스템의 기본 ulimit는 1024이고 MongoDB는 최소 64000이 필요합니다.

ulimit를 변경하려면 아래의 nano 편집기 명령을 사용하여 새 구성 파일 /etc/security/limits.d/mongodb.conf를 만듭니다.

sudo nano /etc/security/limits.d/mongodb.conf

파일에 다음 줄을 추가합니다. 이 줄을 사용하여 MongoDB 서버를 실행하는 기본 사용자인 특정 사용자 mongod에 대해 ulimit를 설정합니다.

mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000

파일을 저장하고 완료되면 편집기를 종료합니다.

ulimit를 구성한 후 이제 /etc/sysctl.conf 파일을 통해 MongoDB 서버의 최대 가상 메모리를 늘릴 수 있습니다.

아래 nano 편집기 명령을 사용하여 구성 파일 /etc/sysctl.conf를 엽니다.

sudo nano /etc/sysctl.conf

파일에 다음 줄을 추가합니다.

fs.file-max = 2097152
vm.max_map_count = 262144
vm.swappiness = 1

파일을 저장하고 편집기를 종료합니다.

마지막으로 아래 명령을 실행하여 Rocky Linux 시스템을 재부팅하고 모드의 시스템 변경 사항을 적용하십시오.

sudo reboot

이제 MongoDB 서버는 THP를 비활성화하고 MongoDB 사용자의 경우 ulimit 64000, 최대 가상 메모리는 262144로 실행해야 합니다. 다음 단계에서는 MongoDB 관리 사용자를 설정한 다음 MongoDB 작업의 기본 사항을 배웁니다.

MongoDB용 관리자 설정

이제 최적화된 Rocky Linux 서버에서 MongoDB를 실행하고 있습니다. 그리고 이 단계에서는 새 관리 사용자를 만들고 MongoDB 서버에서 인증 및 권한 부여를 활성화하여 MongoDB 배포를 보호합니다.

먼저 아래의 mongosh 명령을 통해 MongoDB 서버에 로그인합니다.

mongosh

이제 아래 쿼리를 실행하여 기본 MongoDB 설치에서 활성화된 MongoDB 모니터링을 비활성화합니다.

db.disableFreeMonitoring()

다음으로 아래 쿼리를 사용하여 기본 데이터베이스 관리자로 전환합니다.

use admin

이제 다음 MongoDB 쿼리를 사용하여 새 MongoDB 관리 사용자를 만듭니다. 또한 아래 쿼리에서 사용자 이름을 변경해야 합니다.

이 예에서는 새 관리 사용자 myAliceAdmin을 생성합니다. 쿼리 passwordPrompt()를 사용하면 쿼리 내에서 일반 텍스트를 사용하는 대신 프롬프트를 통해 암호를 설정할 수 있습니다.

db.createUser(
  {
    user: "myAliceAdmin",
    pwd: passwordPrompt(),
    roles: [
      { role: "userAdminAnyDatabase", db: "admin" },
      { role: "readWriteAnyDatabase", db: "admin" }
    ]
  }
)

새 사용자가 생성되면 { ok: 1 }과 같은 출력을 받게 됩니다.

이제 Ctrl+d를 누르거나 quit를 입력하여 MongoDB 셸을 종료합니다.

다음으로 아래 nano 편집기 명령을 사용하여 MongoDB 구성 파일 /etc/mongod.conf를 엽니다.

sudo nano /etc/mongod.conf

MongoDB 인증 및 권한 부여를 활성화하려면 보안 매개변수의 주석 처리를 제거하고 authorization: enabled 라인을 추가하십시오.

security:
    authorization: enabled

파일을 저장하고 완료되면 편집기를 종료합니다.

마지막으로 아래 systemctl 명령을 실행하여 MongoDB 서비스를 다시 시작하고 변경 사항을 적용합니다.

sudo systemctl restart mongod

이제 MongoDB 관리 사용자가 생성되었고 MongoDB 서버에서 권한 부여 및 인증이 활성화되었습니다. 다음으로 두 가지 다른 방법으로 사용자 인증을 확인합니다.

아래의 mongosh 명령을 통해 MongoDB 셸에 로그인합니다.

mongosh

로그인 후 아래 쿼리를 실행하여 MongoDB 관리자 myAliceAdmin으로 인증합니다. 암호를 묻는 메시지가 표시되면 MongoDB 관리자 암호를 입력합니다.

use admin
db.auth("myAliceAdmin", passwordPrompt())

인증에 성공하면 { ok: 1 }과 같은 출력을 받아야 합니다.

MongoDB 셸에 로그인하고 아래의 단일 mongosh 명령으로 인증하는 또 다른 방법입니다. 프롬프트가 표시되면 비밀번호를 입력하십시오.

이 명령을 사용하여 포트 27017에서 실행되는 MongoDB 서버에 연결하고 사용자 이름 myAliceAdmin으로 데이터베이스 관리자를 인증합니다.

mongosh --port 27017 --authenticationDatabase \
    "admin" -u "myAliceAdmin" -p

인증에 성공하면 MongoDB 셸에 로그인해야 합니다.

MongoDB 서버는 이제 사용자 및 비밀번호 인증으로 보호됩니다. 또한 MongoDB에 관리자 사용자를 생성했습니다. 다음으로 애플리케이션에 사용할 수 있는 새 MongoDB 사용자를 생성하는 방법을 배웁니다.

MongoDB에서 사용자 및 데이터베이스 생성

이 단계에서는 애플리케이션에 사용할 수 있는 새 MongoDB 사용자를 만듭니다. 그 외에도 MongoDB 서버에서 사용자 목록을 확인한 다음 MongoDB 새 사용자로 MongoDB 셸에 로그인합니다.

시작하기 전에 MongoDB 셸에 로그인했는지 확인하십시오. 그런 다음 아래 명령을 실행하여 새 데이터베이스 testdb로 전환하고 새 MongoDB 사용자를 생성합니다.

이 예에서는 데이터베이스 testdb에 대한 readWrite 역할과 데이터베이스 보고에 대한 읽기 전용 역할을 가진 새로운 MongoDB 사용자 myTestUser를 생성합니다.

use tesdb
db.createUser(
  {
    user: "myTestUser",
    pwd:  passwordPrompt(),   // or cleartext password
    roles: [ { role: "readWrite", db: "testdb" },
             { role: "read", db: "reporting" } ]
  }
)

메시지가 표시되면 새 사용자 myTestUser의 새 암호를 입력합니다. 그리고 새 사용자 myTestUser가 생성되었음을 의미하는 출력 { ok: 1 }을 수신해야 합니다.

그런 다음 데이터베이스 관리자로 전환하고 아래 쿼리를 실행하여 MongoDB 서버의 사용자 목록을 확인합니다.

use admin
db.system.users.find()

다음과 유사한 출력이 표시됩니다. 새 사용자 myTestUser가 데이터베이스 testdb에 대한 readWrite 역할과 데이터베이스 보고에 대한 읽기 역할로 생성됩니다.

이제 Ctrl+d를 눌러 종료하고 MongoDB 셸을 종료합니다.

MongoDB 사용자 myTestUser가 생성되었는지 확인하기 위해 이제 myTestUser를 통해 MongoDB에 로그인합니다.

아래 명령을 실행하여 myTestUser 사용자를 통해 MongoDB에 로그인합니다. 암호를 묻는 메시지가 나타나면 암호를 입력하십시오.

mongosh --port 27017 -u "myTestUser" \
    --authenticationDatabase "testdb" -p

로그인 후 아래 MongoDB 쿼리를 실행하여 현재 연결을 확인합니다.

db.runCommand({connectionStatus : 1})

이 스크린샷과 유사한 출력이 표시됩니다. 이제 myTestUser 사용자를 통해 MongoDB 서버에 연결하고 인증했습니다.

이제 새 MongoDB 사용자를 만들었으므로 이제 MongoDB에서 데이터를 삽입하고 검색하는 방법을 배웁니다.

MongoDB에 데이터 삽입 및 쿼리

새 MongoDB 사용자를 만든 후에는 이제 데이터베이스를 만들고 데이터를 삽입하고 MongoDB에서 데이터를 검색하는 방법을 배우게 됩니다. insertOne 쿼리 및 insertMany 쿼리를 사용하여 MongoDB에 데이터를 추가하고 $in 및 $gte와 같은 쿼리 연산자를 찾기 쿼리와 함께 사용하여 MongoDB에서 데이터를 가져오는 방법을 배웁니다.

먼저 새 사용자로 MongoDB 서버에 로그인했는지 확인합니다. 이 예는 myTestUser입니다. 그런 다음 아래 사용 쿼리를 통해 데이터베이스 testdb로 전환합니다.

use testdb

이제 MongoDB 셸이 testdb>처럼 됩니다.

다음으로 아래 쿼리를 실행하여 새 컬렉션을 만들고 여기에 새 데이터를 삽입합니다. 이 예에서는 새 컬렉션 동영상을 만들고 컬렉션에 하나의 데이터만 삽입하는 데 사용할 수 있는 insertOne 쿼리를 통해 새 데이터를 삽입합니다.

db.movies.insertOne(
  {
    title: "The Hobbit",
    genres: [ "Adventure", "Fantasy" ],
    runtime: 172,
    rated: "R",
    year: 2012,
    directors: [ "Peter Jackson" ],
    cast: [ "Martin Freeman", "Ian McKellen", "Richard Armitage" ],
    type: "movie"
  }
)

이제 승인됨: ok와 같은 출력을 받게 됩니다. 이는 새 데이터가 추가되고 새 컬렉션이 생성되었음을 의미합니다.

이제 아래 쿼리를 실행하여 testdb 데이터베이스의 컬렉션 목록을 확인하고 testdb 내에서 사용 가능한 데이터를 표시합니다.

컬렉션 표시 쿼리는 현재 데이터베이스의 컬렉션/테이블 목록을 표시하고 찾기 쿼리는 데이터베이스에서 사용 가능한 데이터를 표시합니다. 찾기 쿼리를 통해 특정 필드를 필터링할 수도 있습니다.

show collections
db.movies.find( {} )

다음과 같은 출력을 받아야 합니다. 컬렉션 영화는 testdb 데이터베이스에서 사용할 수 있습니다. 또한 추가한 새 데이터는

다음으로 insertMany 쿼리를 통해 한 번에 여러 데이터를 추가할 수도 있습니다. 아래 쿼리를 실행하여 insertMany 쿼리를 통해 영화 컬렉션에 두 개의 데이터를 삽입합니다.

db.movies.insertMany([
   {
      title: "The Lord of the Rings",
      genres: [ "Action", "Adventure", "Drama" ],
      runtime: 240,
      rated: "PG-13",
      year: 2001,
      directors: [ "Peter Jackson" ],
      cast: [ "Elijah Wood", "Ian McKellen", "Orlando Bloom" ],
      type: "movie"
    },
    {
      title: "Harry Potter",
      genres: [ "Adventure", "Family", "Fantasy" ],
      runtime: 140,
      rated: "R",
      year: 2007,
      directors: [ "David Yates" ],
      cast: [ "Daniel Radcliffe", "Emma Watson", "Rupert Grint" ],
      type: "movie"
    }
])

산출:

이제 아래 찾기 쿼리를 실행하여 데이터를 검색하십시오. 이를 통해 "Peter Jackson" 필터 디렉터로 데이터를 검색할 수 있습니다.

db.movies.find( { directors: "Peter Jackson" })

다음과 같은 출력을 받게 됩니다. 감독이 있는 모든 영화: "피터 잭슨"이 터미널에 표시됩니다.

다음으로 쿼리 연산자를 사용하여 찾기 쿼리에서 조건을 지정할 수도 있습니다.

장르가 액션 및/또는 가족인 데이터를 검색하려면 아래 쿼리를 실행하세요. $in 연산자는 배열에 지정된 값과 일치하는 데이터를 검색하는 데 사용할 수 있습니다.

db.movies.find( { genres: { $in: [ "Action", "Family" ] } } )

이제 다음과 같은 출력이 표시됩니다.

시도해 볼 수 있는 또 다른 쿼리 연산자는 $gte로 지정된 값보다 크거나 같은 데이터를 검색하는 데 사용할 수 있습니다.

그 전에 아래 쿼리를 실행하여 영화 컬렉션에 새 데이터를 삽입합니다.

db.movies.insertOne(
  {
    title: "Transformers",
    genres: [ "Adventure", "Action", "Sci-Fi" ],
    runtime: 150,
    rated: "PG-13",
    year: 2007,
    directors: [ "Michael Bay" ],
    cast: [ "Shia LaBeouf", "Megan Fox", "Josh Duhamel" ],
    type: "movie"
  }
)

이제 아래 쿼리를 실행하여 $gte 쿼리 연산자로 데이터를 검색합니다. 2001년 이후에 출시된 "액션" 장르의 영화를 검색합니다.

db.movies.find( { genres: "Action", "year": { $gte: 2001 } } )

다음과 유사한 출력이 표시됩니다. 이 예에서는 2001년 이후에 출시된 액션 장르의 두 편의 영화(반지의 제왕 및 트랜스포머)를 받게 됩니다.

이를 염두에 두고 이제 MongoDB에서 데이터를 삽입하고 검색하는 방법을 배웠습니다. 하나의 데이터를 추가하기 위한 기본 쿼리 insertOne과 일부 데이터를 한 번에 추가하기 위한 insertMany 쿼리를 배웠습니다.

그런 다음 MongoDB에서 데이터를 검색하는 찾기 쿼리의 기본 사용법도 배웠습니다. 그 외에도 MongoDB에서 연산자 쿼리 $in 및 $gte를 사용하는 방법도 배웠습니다.

다음 단계에서는 MongoDB 컬렉션에서 데이터를 업데이트하는 방법을 배웁니다.

MongoDB에서 데이터 업데이트

이 단계에서는 두 개의 쿼리를 사용하여 MongoDB에서 데이터를 업데이트하는 방법을 배웁니다. updateOne은 문서 내부의 한 필드를 업데이트하고 replaceOne을 사용하여 처음 일치하는 데이터를 새 데이터로 완전히 대체합니다.

MongoDB에서 데이터를 업데이트하려면 여러 메서드와 쿼리를 사용할 수 있습니다. 이 예제에서는 updateOne 및 replaceOne 쿼리를 사용하는 방법을 배웁니다. updateOne 쿼리는 문서의 단일 필드를 업데이트하는 데 사용할 수 있으며 replaceOne은 전체 문서를 대체합니다.

아래 쿼리를 실행하여 updateOne 쿼리를 사용하여 데이터를 업데이트합니다. 이 예에서는 영화 트랜스포머에서 등급: "PG-13"을 등급: "R"로 업데이트합니다.

db.movies.updateOne( { title: "Transformers" },
{
  $set: {
    rated: "R"
  }
})

matchingCount: 1 및 modifiedCount: 1과 같은 출력을 수신해야 합니다.

이제 다음 쿼리로 새 데이터를 확인합니다. Transformers 영화의 데이터가 업데이트된 것을 볼 수 있습니다.

db.movies.find( { title: "Transformers" })    

다음으로 아래 replaceOne 쿼리를 실행하여 필터에서 첫 번째로 일치하는 데이터를 바꾸고 전체 문서를 새 데이터로 바꿉니다. 이 예에서는 영화 Transformers의 전체 문서를 새 데이터로 바꿉니다.

db.movies.replaceOne(
  { title: "Transformers" },
  {
    title: "Transformers: Dark of the Moon",
    genres: [ "Adventure", "Action", "Sci-Fi" ],
    runtime: 160,
    rated: "PG-13",
    year: 2011,
    directors: [ "Michael Bay" ],
    cast: [ "Shia LaBeouf", "Rosie Huntington-Whiteley", "Tyrese Gibson" ],
    type: "movie"
  }
)

이제 다음과 같은 출력이 표시되어야 합니다.

이제 아래 쿼리를 실행하여 MongoDB에서 새로 업데이트된 데이터를 확인하십시오.

db.movies.find( { title: "Transformers" })
db.movies.find( { title: "Transformers: Dark of the Moon" })  

다음과 유사한 출력을 수신해야 합니다. 영화 Transformers가 제거/새 영화 Transformers: Dark of the Moon으로 대체되었습니다.

MongoDB에서 데이터 삭제

이 단계에서는 MongoDB 문서에서 데이터를 삭제하는 방법을 배웁니다. 그런 다음 데이터베이스를 삭제하고 MongoDB에서 사용자를 삭제하는 방법을 배웁니다.

아래 명령을 실행하여 MongoDB 컬렉션에서 데이터를 삭제합니다. 이 예에서는 deleteMany 쿼리를 통해 전체 문서 Transformers: Dark of the Moon을 삭제합니다.

db.movies.deleteMany( { title: "Transformers: Dark of the Moon" } )
db.movies.find( { title: "Transformers: Dark of the Moon" })

deletedCount: 1과 같은 출력이 표시되어야 합니다.

다음으로 아래 명령을 실행하여 아래의 deleteOne 쿼리를 통해 단일 문서를 삭제합니다. 이렇게 하면 필터 내에서 일치하는 첫 번째 데이터가 삭제됩니다.

이 예에서는 캐스트와 일치하는 첫 번째 문서인 "Ian McKellen"을 삭제합니다.

db.movies.deleteOne( { cast: "Ian McKellen" } )
db.movies.find( { cast: "Ian McKellen" })

아래는 데이터 삭제 전과 후의 출력입니다.

삭제 전 - 출연진이 출연한 영화 두 편이 표시됩니다. "Ian McKellen".

문서가 제거되면 출연진이 출연한 영화 "Ian McKellen" 하나만 표시됩니다.

다음으로 MongoDB에서 사용자 및 데이터베이스를 삭제하는 방법을 배웁니다. MongoDB에서 사용자를 삭제하려면 MongoDB 관리 사용자에 대한 루트 역할이 있어야 합니다.

아래 명령을 실행하여 MongoDB 관리자 myAliceAdmin으로 인증하고 비밀번호를 입력하십시오.

use admin
db.auth("myAliceAdmin", passwordPrompt())

MongoDB 관리자로 인증된 후 아래 쿼리를 실행하여 관리자에게 루트 역할을 부여합니다.

db.grantRolesToUser("myAliceAdmin", ["root"]);

이제 testdb로 전환하고 아래 쿼리를 통해 testdb 데이터베이스 내의 사용자를 삭제합니다. 이렇게 하면 MongoDB에서 사용자 myTestUser가 삭제됩니다.

use testdb
db.runCommand( { dropAllUsersFromDatabase: 1 } )

{ n:1, ok: 1 }과 같은 출력이 표시되어야 합니다.

다음으로 아래 쿼리를 실행하여 데이터베이스 testdb를 삭제/제거합니다.

db.dropDatabase()

그리고 { ok: 1, drop: testdb }와 같은 출력을 얻어야 합니다.

이제 데이터베이스 내의 testdb 및 사용자가 제거되었습니다.

아래 쿼리를 실행하여 데이터베이스 관리자로 전환하고 MongoDB 서버의 데이터베이스 목록을 확인합니다. testdb 데이터베이스가 제거되었는지 확인해야 합니다.

use admin
show dbs

마지막으로 아래 쿼리를 실행하여 MongoDB의 사용자를 표시하고 나열합니다.

db.system.users.find()

다음과 같은 출력이 표시되어야 합니다. myTestUser 사용이 MongoDB 서버에서 제거/삭제되었습니다.

결론

이 가이드에서는 Rocky Linux 9 서버에 최신 버전의 MongoDB Server(Community Edition)를 설치했습니다. 또한 MongoDB 서버에서 인증 및 권한 부여를 활성화하는 방법과 MongoDB 배포를 위해 Linux 서버를 최적화하는 방법도 배웠습니다.

그 과정에서 MongoDB 서버를 연결하고 관리하기 위한 Mongosh 명령의 기본 사용법을 배웠습니다. 그리고 사용자 생성, 데이터베이스 생성, 데이터 삽입 및 검색, 데이터 업데이트, MongoDB 서버에서 데이터 삭제/제거를 위한 기본 MongoDB 쿼리를 배웠습니다.

이를 통해 MongoDB 설명서에서 MongoDB 쿼리에 대해 자세히 알아볼 수 있습니다. 또한 대규모 배포에서 MongoDB를 배포하는 데 관심이 있는 경우 MongoDB 클러스터에서 수평 확장을 설정할 수 있는 샤딩을 활성화할 수 있습니다.