MongoDB 데이터 가져오기

MongoDBBeginner
지금 연습하기

소개

이 랩에서는 MongoDB 데이터베이스로 데이터를 가져오는 데 필요한 필수 기술을 배우게 됩니다. JSON 과 CSV 라는 두 가지 일반적인 데이터 형식을 사용합니다. mongoimport 명령줄 도구를 사용하여 파일에서 MongoDB 컬렉션으로 데이터를 로드합니다. 이 랩에서는 데이터 가져오기, 가져오기 중 데이터 유형 지정, 쿼리 및 mongoexport 도구를 사용하여 데이터가 올바르게 로드되었는지 확인하는 과정을 안내합니다.

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

JSON 파일에서 데이터 가져오기

첫 번째 단계에서는 JSON 파일에서 MongoDB 컬렉션으로 데이터를 가져옵니다. JSON(JavaScript Object Notation) 은 MongoDB 의 네이티브 형식으로, 가져오기 프로세스를 간단하게 만듭니다. 이를 위해 이 목적을 위해 설계된 명령줄 도구인 mongoimport 유틸리티를 사용합니다.

~/project 디렉토리에 books.json이라는 샘플 파일이 미리 생성되어 있습니다. 먼저 터미널에서 해당 내용을 검사합니다.

cat ~/project/books.json

다음과 같이 JSON 문서 배열이 출력되어야 합니다.

[
  {
    "_id": 1,
    "title": "MongoDB Basics",
    "author": "Jane Smith",
    "year": 2023,
    "tags": ["mongodb", "database", "nosql"]
  },
  {
    "_id": 2,
    "title": "Python Programming",
    "author": "John Doe",
    "year": 2022,
    "tags": ["python", "programming"]
  },
  {
    "_id": 3,
    "title": "Data Science Handbook",
    "author": "Alice Johnson",
    "year": 2021,
    "tags": ["data science", "python", "machine learning"]
  }
]

이제 이 데이터를 library_db라는 새 데이터베이스와 books라는 컬렉션으로 가져옵니다.

mongoimport --db library_db --collection books --file ~/project/books.json --jsonArray

명령줄 옵션을 살펴보겠습니다.

  • --db library_db: 대상 데이터베이스를 지정합니다.
  • --collection books: 데이터베이스 내의 대상 컬렉션을 지정합니다.
  • --file ~/project/books.json: 입력 파일의 경로를 제공합니다.
  • --jsonArray: 파일에 단일 JSON 배열이 포함되어 있으며, 각 요소는 삽입할 문서임을 mongoimport에 알립니다.

가져오기 진행 상황 및 완료를 나타내는 출력이 표시됩니다.

2025-08-27T15:10:40.411+0800    connected to: mongodb://localhost/
2025-08-27T15:10:40.417+0800    3 document(s) imported successfully. 0 document(s) failed to import.

데이터가 올바르게 가져와졌는지 확인하기 위해 이제 MongoDB Shell 인 mongosh를 사용하여 MongoDB 에 연결합니다.

mongosh

쉘에 들어간 후 library_db 데이터베이스로 전환합니다.

use library_db

이제 books 컬렉션의 문서를 세어 세 개의 레코드가 모두 가져와졌는지 확인합니다.

db.books.countDocuments()

출력은 3이어야 합니다. 가져온 문서 중 하나를 표시하여 구조를 확인할 수도 있습니다.

db.books.findOne()

이렇게 하면 컬렉션의 첫 번째 문서가 표시됩니다. 마지막으로 MongoDB Shell 을 종료하여 터미널로 돌아갑니다.

exit

CSV 파일에서 데이터 가져오기

다음으로 CSV(Comma-Separated Values) 파일에서 데이터를 가져옵니다. CSV 는 표 형식 데이터의 일반적인 형식이며, mongoimport는 이를 MongoDB 문서로 쉽게 변환할 수 있습니다.

library_members.csv라는 샘플 CSV 파일이 준비되었습니다. 해당 내용을 살펴보겠습니다.

cat ~/project/library_members.csv

파일에는 헤더 행과 세 개의 데이터 행이 포함되어 있습니다.

name,age,membership_status
John Doe,35,active
Jane Smith,28,active
Mike Johnson,42,expired

이제 mongoimport를 사용하여 동일한 library_db 데이터베이스의 members라는 새 컬렉션으로 이 데이터를 로드합니다.

mongoimport --db library_db --collection members --type csv --file ~/project/library_members.csv --headerline

CSV 가져오기에 사용된 새로운 옵션은 다음과 같습니다.

  • --type csv: 입력 파일 형식이 CSV 임을 지정합니다.
  • --headerline: 파일의 첫 번째 줄을 문서의 필드 이름으로 사용하도록 mongoimport에 지시합니다.

출력에서 가져오기가 성공했음을 확인할 수 있습니다.

2025-08-27T15:11:33.553+0800    connected to: mongodb://localhost/
2025-08-27T15:11:33.558+0800    3 document(s) imported successfully. 0 document(s) failed to import.

가져오기를 확인해 보겠습니다. MongoDB Shell 에 연결하고 members 컬렉션을 확인합니다. mongosh를 시작할 때 데이터베이스를 직접 지정하여 단계를 절약할 수 있습니다.

mongosh library_db

이제 members 컬렉션의 문서를 세어봅니다.

db.members.countDocuments()

결과는 3이어야 합니다. 다음으로 문서 중 하나를 검사하여 mongoimport가 CSV 행을 BSON 문서로 어떻게 변환했는지 확인합니다.

db.members.findOne()

이와 유사한 문서를 볼 수 있습니다. 기본적으로 age를 포함한 모든 값이 문자열로 가져와진다는 점에 유의하십시오.

{
  _id: ObjectId("..."),
  name: 'John Doe',
  age: '35',
  membership_status: 'active'
}

다음 단계에서 데이터 유형을 처리하는 방법을 배우게 됩니다. 지금은 쉘을 종료합니다.

exit

CSV 가져오기 시 데이터 타입 처리

CSV 파일에서 가져올 때 mongoimport는 기본적으로 모든 값을 문자열로 취급합니다. 숫자 또는 날짜 기반 작업을 수행해야 하는 경우 문제가 될 수 있습니다. 이 단계에서는 CSV 데이터를 가져온 다음 MongoDB 에서 데이터 유형을 변환하는 방법을 배웁니다.

library_members.csv 데이터를 typed_members라는 새 컬렉션으로 다시 가져온 다음 age 필드를 정수로 변환해 보겠습니다.

먼저 필드 이름을 명시적으로 정의할 것이므로 헤더가 없는 CSV 파일을 만듭니다.

tail -n +2 ~/project/library_members.csv > ~/project/library_members_no_header.csv

이제 명시적인 필드 이름을 사용하여 데이터를 가져옵니다.

mongoimport --db library_db --collection typed_members --type csv --file ~/project/library_members_no_header.csv --fields "name,age,membership_status"

가져온 후 MongoDB 의 업데이트 작업을 사용하여 age 필드를 문자열에서 정수로 변환해야 합니다.

mongosh library_db --eval "db.typed_members.updateMany({}, [{ \$set: { age: { \$toInt: \"\$age\" } } }])"

이 명령은 업데이트 작업 내에서 MongoDB 의 집계 파이프라인을 사용하여 $toInt 연산자를 통해 모든 age 값을 문자열에서 정수로 변환합니다.

이제 mongosh에 연결하고 typed_members 컬렉션의 데이터 유형을 검사하여 결과를 확인해 보겠습니다.

mongosh library_db

먼저 컬렉션에서 하나의 문서를 찾아 변환된 데이터를 확인합니다.

db.typed_members.findOne()

출력에서 age 필드가 숫자로 표시되어야 합니다.

{
  _id: ObjectId("..."),
  name: 'Jane Smith',
  age: 28,
  membership_status: 'active'
}

mongosh 내에서 JavaScript 의 typeof 연산자를 사용하여 age 필드의 유형을 명시적으로 확인할 수 있습니다.

typeof db.typed_members.findOne().age

출력은 number여야 하며, 이는 데이터 유형 변환이 성공했음을 확인합니다. 이를 통해 30 세 이상인 모든 회원을 찾는 것과 같은 숫자 쿼리를 수행할 수 있습니다.

db.typed_members.find({ age: { $gt: 30 } })

이 쿼리는 이제 예상대로 작동하며 두 개의 문서를 반환합니다. 다음 단계로 진행하려면 쉘을 종료합니다.

exit

쿼리 및 내보내기를 통한 데이터 확인

모든 데이터 가져오기 프로세스의 마지막 단계는 철저한 확인입니다. 여기에는 문서 수를 확인하는 것뿐만 아니라 데이터를 샘플링하고 무결성을 보장하기 위해 쿼리를 실행하는 것도 포함됩니다. 추가 분석을 위해 데이터를 외부 파일로 내보낼 수도 있습니다.

먼저 mongosh로 데이터베이스에 연결합니다.

mongosh library_db

지금까지의 작업 결과를 확인하기 위해 데이터베이스의 모든 컬렉션을 나열할 수 있습니다.

show collections

books, members, typed_members가 보여야 합니다. 이제 데이터를 검증하기 위해 몇 가지 쿼리를 실행해 보겠습니다. books 컬렉션의 경우 "python" 태그가 있는 모든 책을 찾습니다.

db.books.find({ tags: "python" })

이 쿼리는 배열 필드 내에서 검색하는 방법을 보여줍니다. 두 권의 책이 반환되어야 합니다. typed_members 컬렉션의 경우 "active" 멤버십 상태를 가진 모든 회원을 찾습니다.

db.typed_members.find({ membership_status: "active" })

두 명의 회원이 반환되어야 합니다. 이러한 간단한 쿼리는 데이터가 예상대로 구조화되었는지 확인하는 데 도움이 됩니다.

또 다른 강력한 확인 도구는 mongoimport와 반대되는 mongoexport입니다. 컬렉션을 파일로 내보냅니다. books 컬렉션을 새 JSON 파일로 내보내 보겠습니다. 먼저 쉘을 종료합니다.

exit

이제 터미널에서 mongoexport 명령을 실행합니다.

mongoexport --db library_db --collection books --out ~/project/exported_books.json

--out 플래그는 출력 파일의 경로를 지정합니다. 이 명령은 프로젝트 디렉터리에 exported_books.json이라는 파일을 생성합니다. 해당 내용을 보면 내보내기를 확인할 수 있습니다.

cat ~/project/exported_books.json

출력 파일의 각 줄은 컬렉션의 자체 포함 JSON 문서입니다. 이 파일은 백업, 마이그레이션 또는 다른 도구를 사용한 분석에 사용할 수 있습니다.

요약

이 실습에서는 mongoimport 유틸리티를 사용하여 JSON 및 CSV 파일 모두에서 MongoDB 로 데이터를 가져오는 방법을 배웠습니다. JSON 배열을 컬렉션으로 가져오는 연습을 하고 mongosh를 사용하여 결과를 확인했습니다. 그런 다음 CSV 파일에서 데이터를 가져왔는데, 처음에는 기본 문자열 유형으로 가져왔고, 이후 숫자와 같은 필드에 대한 데이터 유형을 지정하여 가져왔습니다. 마지막으로 mongosh에서 쿼리를 실행하고 mongoexport를 사용하여 컬렉션을 파일로 다시 내보내어 가져온 데이터의 무결성을 확인하는 방법을 배웠습니다. 이러한 기술은 모든 MongoDB 프로젝트에서 데이터를 관리하는 데 필수적인 기술입니다.