Computer Science/Database

MongoDB Installation & Tutorial (MacOS)

songye 2024. 3. 28. 22:52

설치 (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.jsexpress프레임워크를 사용해 간단한 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를 요청하는 것이 아니라

내가 직접만든 것을 요청하는 경험은 전혀 새로운 세상이었습니다.

 

또 다른 헬로월드가 열렸다랄까,,

 

프론트엔드를 개발하며 깊은 지식은 필요없겠지만

 

알아두면 정말 좋겠구나라는 생각이 드는 공부였습니다