첫 MongoDB 실습

MongoDBBeginner
지금 연습하기

소개

LabEx 에 오신 것을 환영합니다! 이 문서는 여러분의 첫 번째 MongoDB 실습입니다. 데이터베이스를 사용해 본 경험이 없더라도 걱정하지 마세요. 모든 단계를 안내해 드리겠습니다.

먼저 MongoDB 가 무엇인지 이해해 봅시다. MongoDB 는 데이터를 유연한 문서 형식으로 저장하는 데이터베이스 시스템입니다. 전통적인 스프레드시트와 달리 MongoDB 는 컴퓨터의 폴더에 파일을 정리하는 방식과 유사하게 데이터를 더 자연스러운 방식으로 구성할 수 있도록 합니다.

이 실습에서는 다음을 배우게 됩니다.

  1. MongoDB 셸 시작 및 기능 이해
  2. 첫 번째 데이터베이스 및 컬렉션 생성
  3. MongoDB 에 데이터 추가 및 보기
  4. 데이터 개수 세기 및 삭제

이러한 기술은 여러분의 MongoDB 여정의 기초가 될 것입니다. 시작해 봅시다!

아래의 계속 버튼을 클릭하여 실습을 시작하세요.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 69%입니다.학습자들로부터 99%의 긍정적인 리뷰율을 받았습니다.

MongoDB 셸 시작하기

MongoDB 를 시작하기 전에 먼저 LabEx VM 에서 터미널을 열어야 합니다. 다음 두 가지 방법으로 터미널을 열 수 있습니다.

  1. 터미널 인터페이스: 속도와 사용 편의성 때문에 터미널 인터페이스를 권장합니다. 이는 MongoDB 관련 실습의 기본 인터페이스입니다.

    터미널 인터페이스에서 터미널 열기
  2. 데스크톱 인터페이스: 보다 전통적인 터미널 환경을 선호한다면 데스크톱 인터페이스를 사용할 수 있습니다. 데스크톱 왼쪽을 보고 Xfce Terminal이라고 표시된 아이콘을 클릭하세요.

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

두 방법 모두 동일하게 작동합니다. 단지 동일한 실습 환경에 접근하는 방식이 다를 뿐입니다. 선호하는 방법을 선택하세요!

이제 데이터베이스의 제어판과 같은 MongoDB 셸을 시작해 보겠습니다. 셸은 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() 메서드에 쿼리 필터 (query filter) 를 전달합니다. 쿼리 필터는 검색 조건을 지정하는 문서입니다.

예를 들어, "JohnDoe"가 쓴 모든 책을 찾으려면 다음 쿼리를 사용합니다.

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

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

숫자 값을 기준으로 쿼리할 수도 있습니다. 2023 년에 출판된 모든 책을 찾아보겠습니다.

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

이것은 "MongoDBBasics" 책을 반환합니다. find() 메서드는 필요한 정확한 데이터를 검색하는 강력한 도구입니다.

문서 삭제

마지막으로 컬렉션에서 문서를 삭제하는 방법을 배워보겠습니다.

특정 조건과 일치하는 단일 문서를 삭제하려면 deleteOne() 메서드를 사용합니다. "MongoDBBasics"라는 제목의 책을 삭제해 보겠습니다.

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

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

{ acknowledged: true, deletedCount: 1 }

조건과 일치하는 여러 문서를 삭제하려면 deleteMany()를 사용합니다. 이 메서드는 더 복잡한 조건을 만들기 위해 쿼리 연산자 (query operators) 를 지원합니다. 예를 들어, $lt는 "less than"(미만) 을 의미합니다.

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()를 사용하여 컬렉션의 문서 개수 세기
  • deleteOne()deleteMany()를 사용하여 문서 삭제하기

이러한 기본적인 기술은 MongoDB 로 강력한 애플리케이션을 개발하는 데 있어 구성 요소입니다. 연습이 중요하므로 배운 명령을 자유롭게 추가로 실험해 보세요.