첫 MongoDB 실습

MongoDBBeginner
지금 연습하기

소개

LabEx에 오신 것을 환영합니다! 이번 실습은 첫 MongoDB 실습입니다. 데이터베이스를 사용해 본 적이 없어도 걱정하지 마세요. 모든 단계를 안내합니다.

먼저 MongoDB가 무엇인지 알아봅니다. MongoDB는 유연한 문서 형식으로 데이터를 저장하는 데이터베이스 시스템입니다. 기존 스프레드시트와 달리 컴퓨터에서 파일을 폴더별로 정리하는 방식처럼 데이터를 더 자연스럽게 구성할 수 있습니다.

이번 실습에서는 다음 방법을 배웁니다.

  1. MongoDB 셸을 시작하고 그 역할 이해하기
  2. 첫 데이터베이스와 컬렉션 만들기
  3. MongoDB에서 데이터 추가하고 확인하기
  4. 데이터 조회, 수정, 삭제하기

이러한 기술은 MongoDB를 학습하는 데 필요한 기초가 됩니다. 시작하겠습니다!

실습을 시작하려면 아래의 Continue 버튼을 클릭합니다.

MongoDB 셸 시작

이번 단계에서는 터미널을 열고 LabEx VM에서 MongoDB 셸을 시작합니다.

빠르고 사용하기 쉬운 Terminal Interface를 사용하는 것이 좋습니다. MongoDB 관련 실습의 기본 인터페이스입니다.

터미널 인터페이스에서 터미널 열기

더 전통적인 터미널 환경을 선호한다면 Desktop Interface를 사용합니다. 데스크톱 왼쪽에서 Xfce Terminal이라고 표시된 아이콘을 클릭합니다.

데스크톱 인터페이스에서 터미널 열기

두 방법 모두 동일한 실습 환경에 접근하므로 기능 차이는 없습니다. 원하는 방법을 선택하면 됩니다.

이제 데이터베이스를 제어하는 패널과 같은 MongoDB 셸을 시작합니다. 셸에서는 MongoDB에 직접 명령을 입력하고 결과를 확인할 수 있습니다.

MongoDB 셸을 시작하려면 터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

mongosh

로컬 MongoDB 인스턴스에 성공적으로 연결되었다는 연결 메시지가 표시됩니다. 출력은 다음과 비슷합니다.

Current Mongosh Log ID: 65a7f3e5f1a1234567890abc
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+x.y.z
Using MongoDB:          X.X.X
Using Mongosh:          X.X.X

For mongosh info, see: https://docs.mongodb.com/mongodb-shell/

test>

test> 프롬프트가 표시되면 이제 mongosh 셸 안에 있으며 기본 test 데이터베이스에 연결된 상태입니다.

서버에 있는 기존 데이터베이스를 모두 확인합니다. mongosh 셸에 다음 명령을 입력합니다.

show dbs

MongoDB가 내부 용도로 사용하는 기본 데이터베이스 목록이 표시됩니다.

admin     40.00 KiB
config   112.00 KiB
local     40.00 KiB

다음 단계에서는 직접 데이터베이스를 만듭니다.

데이터베이스 만들기 및 문서 삽입

이번 단계에서는 데이터베이스를 만들고 첫 문서를 삽입합니다. MongoDB에서는 데이터베이스를 명시적으로 만들 필요가 없습니다. 데이터베이스에 처음 데이터를 저장할 때 자동으로 생성됩니다. 새 데이터베이스로 전환하려면 use 명령을 사용합니다.

mylab_database라는 데이터베이스로 전환합니다. mongosh 셸에 다음을 입력합니다.

use mylab_database

셸에 switched to db mylab_database가 표시됩니다. 아직 데이터베이스가 실제로 생성되지 않았더라도 이제 해당 데이터베이스의 컨텍스트에서 작업하고 있습니다.

MongoDB의 데이터는 문서의 모음인 컬렉션에 저장됩니다. 문서는 키-값 쌍으로 구성됩니다. 첫 문서를 삽입하여 users 컬렉션을 만듭니다.

insertOne() 메서드를 사용하여 users 컬렉션에 문서 하나를 추가합니다.

db.users.insertOne({ name: "JohnDoe", age: 30, city: "NewYork" })

이 명령을 나누어 살펴보면 다음과 같습니다.

  • db: 현재 데이터베이스(mylab_database)를 나타냅니다.
  • users: 컬렉션 이름입니다. 컬렉션은 자동으로 생성됩니다.
  • insertOne(): 문서 하나를 삽입하는 메서드입니다.
  • {...}: name, age, city와 같은 필드를 포함하는 문서 자체입니다.

MongoDB는 삽입이 완료되었음을 확인하고 문서에 생성한 고유한 _id를 반환합니다.

{
  acknowledged: true,
  insertedId: ObjectId("...")
}

ObjectId는 모든 문서에 자동으로 할당되는 고유 식별자입니다.

이제 문서가 추가되었는지 확인합니다. find() 메서드를 사용하여 users 컬렉션의 모든 문서를 확인합니다.

db.users.find()

방금 삽입한 문서가 출력됩니다.

[
  {
    _id: ObjectId("..."),
    name: 'JohnDoe',
    age: 30,
    city: 'NewYork'
  }
]

여러 문서 삽입

이번 단계에서는 여러 문서를 한 번에 추가합니다. insertMany() 메서드는 문서 배열을 인수로 받습니다.

books 컬렉션을 만들고 하나의 명령으로 책 세 권을 추가합니다.

db.books.insertMany([
    { title: "MongoDBBasics", author: "JaneSmith", year: 2023 },
    { title: "PythonProgramming", author: "JohnDoe", year: 2022 },
    { title: "DataScienceHandbook", author: "AliceJohnson", year: 2021 }
])

배열을 나타내는 대괄호 [ ]에 주목하세요. 배열 안의 각 객체 {...}는 별도의 문서입니다.

MongoDB는 작업이 완료되었음을 확인하고 삽입된 모든 문서의 _id 값을 반환합니다.

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("...")
  }
}

새로 만든 books 컬렉션의 모든 문서를 확인하려면 다시 find() 메서드를 사용합니다.

db.books.find()

방금 추가한 책 문서 세 개가 모두 출력됩니다.

문서 조회 및 개수 확인

이번 단계에서는 삽입한 데이터를 조회하고 개수를 확인합니다.

컬렉션의 전체 문서 수를 세려면 countDocuments() 메서드를 사용합니다. books 컬렉션에 있는 책의 수를 확인합니다.

db.books.countDocuments()

명령이 전체 개수를 반환합니다.

3

특정 문서를 찾으려면 find() 메서드에 쿼리 필터를 전달합니다. 쿼리 필터는 검색 조건을 지정하는 문서입니다.

예를 들어 "JohnDoe"가 작성한 책을 모두 찾으려면 다음 쿼리를 사용합니다.

db.books.find({ author: "JohnDoe" })

{ author: "JohnDoe" } 필터는 author 필드의 값이 "JohnDoe"인 문서만 반환하도록 MongoDB에 지시합니다.

숫자 값을 기준으로 조회할 수도 있습니다. 2023년에 출판된 책을 모두 찾습니다.

db.books.find({ year: 2023 })

이 명령은 "MongoDBBasics" 책을 반환합니다. find() 메서드는 필요한 데이터를 정확하게 가져올 수 있는 강력한 도구입니다.

문서 수정 및 삭제

이번 단계에서는 컬렉션의 문서를 수정하고 삭제합니다.

기존 문서를 변경하려면 updateOne() 메서드를 사용합니다. 이 메서드는 수정할 문서를 선택하는 필터와 변경 내용을 설명하는 업데이트 문서를 받습니다. $set 연산자는 지정한 필드만 변경합니다.

"PythonProgramming" 책의 출판 연도를 2022에서 2024로 변경합니다.

db.books.updateOne(
    { title: "PythonProgramming" },
    { $set: { year: 2024 } }
)

MongoDB가 문서 하나를 찾고 수정했음을 확인합니다.

{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

수정된 문서를 확인합니다.

db.books.find({ title: "PythonProgramming" })

이제 "PythonProgramming" 책의 결과에 year: 2024가 표시됩니다.

다음으로 컬렉션에서 문서를 삭제합니다.

특정 조건과 일치하는 문서 하나를 삭제하려면 deleteOne() 메서드를 사용합니다. 제목이 "MongoDBBasics"인 책을 삭제합니다.

db.books.deleteOne({ title: "MongoDBBasics" })

셸에서 문서 하나가 삭제되었음을 확인합니다.

{ acknowledged: true, deletedCount: 1 }

조건과 일치하는 여러 문서를 삭제하려면 deleteMany()를 사용합니다. 이 메서드는 쿼리 연산자를 지원하므로 더 복잡한 조건을 만들 수 있습니다. 예를 들어 $lt는 "미만"을 의미합니다.

2022년 이전에 출판된 책을 모두 삭제합니다.

db.books.deleteMany({ year: { $lt: 2022 } })

이 명령은 year 필드가 2022보다 작은 모든 문서를 삭제합니다. 이 경우 "DataScienceHandbook"이 삭제됩니다.

남은 책을 확인하려면 마지막으로 find() 명령을 실행합니다.

db.books.find()

컬렉션에는 "PythonProgramming" 책만 남아 있어야 합니다.

이제 MongoDB의 기본 CRUD(Create, Read, Update, Delete) 작업을 연습했습니다. mongosh 셸을 종료하려면 다음을 입력합니다.

exit

요약

첫 MongoDB 실습을 완료했습니다. MongoDB 데이터베이스에서 데이터를 관리하는 핵심 작업을 성공적으로 배우고 연습했습니다.

이번 실습에서는 다음 방법을 배웠습니다.

  • MongoDB 서버와 상호 작용하기 위해 mongosh 셸 시작하기
  • use 명령으로 데이터베이스 전환하기
  • insertOne()insertMany()를 사용하여 문서 하나 또는 여러 개 삽입하기
  • 쿼리 필터를 사용하거나 사용하지 않고 find()로 문서 조회하기
  • countDocuments()로 컬렉션의 문서 개수 확인하기
  • updateOne()$set 연산자로 문서 수정하기
  • deleteOne()deleteMany()로 문서 삭제하기

이러한 기본 기술은 MongoDB를 사용하는 강력한 애플리케이션을 개발하는 기반이 됩니다. 연습이 중요하므로, 배운 명령을 활용해 더 자유롭게 실험해 보세요.