MongoDB Installation & Tutorial (MacOS)
설치 (brew 설치가 사전에 필요합니다!)
Homebrew
The Missing Package Manager for macOS (or Linux).
brew.sh
brew tap mongodb/brew
brew install mongodb-community
DB 시작, 중지, 재시작 명령어
brew services start mongodb-community
brew services stop mongodb-community
brew services restart mongodb-community
Mongo DB 구조
MongoDB는 NoSQL유형으로 관계형 데이터베이스가 아니기에 단순화, 확장성에 좋습니다.
- Database - Collection - Document
ㅇ
다음과 같은 계층 구조를 가지고 있습니다.
db.collection.name
다음 예와 같이 직관적인 계층을 가지고 있습니다.
자 이제 실제 예제를 통해 살펴봅시다.
1. mongo Shell
터미널을 열어 다음과 같이 몽고쉘을 열어봅시다.
mongo
몽고 쉘 창이 떴다면
use yourdatabase
다음 명령어를 입력해 기존 혹은 새로운 데이터베이스를 생성하고 대체합니다.
데이터베이스를 만든다음 콜렉션을 임의로 만들고 데이터를 insert해봅시다
db.user.insertOne({ name: "John"})
다음 명령어를 통해 새로운 혹은 기존 콜렉션에 name: "John"이라는 새로운 데이터를 입력해 저장했습니다.
잘 저장되었는지 확인해봅시다.
db.users.find({ name: "John" })
mongoDB는 이러한 저장된 data들을 각 document라 부르고 고유의 _id 값을 가집니다
2. Local Server
Shell환경에서 mongoDB를 사용해봤다면
이번에는 node.js와 express프레임워크를 사용해 간단한 API Endpoint를 만들어봅시다.
선행 조건이 몇가지 필요합니다.
(1) node.js 설치 후 프로젝트 init
(2) 해당 프로젝트에 express, mongoose 패키지 설치
*해당 사항은 추가로 따로 포스팅해서 백링크를 남기겠습니다*
node.js 프로젝트를 만들었다면 먼저 mongoose 모듈을 불러옵시다
const mongoose = require('mongoose');
다음 database를 연결합시다.
mongoose.connect('mongodb://localhost:27017/database', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB connected'))
.catch(err => console.error('MongoDB connection error:', err));
27017 포트는 데이터베이스 default 포트이므로 mongoDB Port가 어떻게 설정되어있는지 확인 후 연결해야합니다.
const DataModel = mongoose.model('user', new mongoose.Schema({
name: String,
}));
그 다음 user콜렉션을 불러와 const값에 저장합시다. (스키마는 생략가능)
app.get('/api/data', async (req, res) => {
try {
const data = await DataModel.find();
res.json(data);
} catch (error) {
console.error('Error fetching data from MongoDB:', error);
res.status(500).send('Internal Server Error');
}
});
그 다음 임의의 API Endpoint로 data를 json파일로
get요청이 들어올 경우 보냅니다.
로컬 환경에서 확인한 결과입니다.
해당 API Endpoint에 아까 생성한 document값이 로컬환경에서 get요청에 따라 잘 불러와진 것을 확인할 수 있습니다.
처음으로 DB를 설치하고 실제로 사용해보았는데요
단순하지만 복잡한 과정들이 있습니다만 (설치가 반 이상)
만들어진 API Endpoint를 요청하는 것이 아니라
내가 직접만든 것을 요청하는 경험은 전혀 새로운 세상이었습니다.
또 다른 헬로월드가 열렸다랄까,,
프론트엔드를 개발하며 깊은 지식은 필요없겠지만
알아두면 정말 좋겠구나라는 생각이 드는 공부였습니다