MongoDB를 설치하고 mongoose 로 MongoDB에 접속하는 방법에 대해 소개합니다.
간단하게 DB 접속하고 모델을 만들고 샘플 데이터를 저장하고 잘 저장되었는지 확인해보겠습니다.
1. mongoose 설치하고 DB 접속하기
mongoosebasic 디렉터리를 만들고,
$ npm init -y
$ npm i mongoose
VS Code 실행하여 index.js 파일을 만듭니다.
$ code .
index.js 에서 mongoDB 연결 합니다.
( https://mongoosejs.com/ 사이트에서 제공하는 이용방법으로 사용합니다.)
const mongoose = require("mongoose");
mongoose
.connect("mongodb://127.0.0.1:27017/movieApp")
.then(() => {
console.log("connection open !!!");
})
.catch((err) => {
console.log("OH NO error !!!");
console.log(err);
});
기본적으로 mongoose.connet 를 사용하며 기본 접속 URL을 지정합니다. URL 맨 뒤에 입력한 movieApp 은 DB 이름 입니다.
정상적인 접속 여부를 확인하기 위해 then/catch 를 사용합니다.
then 은 접속이 정상인 경우 터미널에 표출하는 내용이며, catch 는 접속 오류인 경우 오류 메시지를 표출해줍니다.
터미널에서 index.js 를 실행하여 정상 연결여부 확인해봅니다.
$ node index.js
2. Schema 만들기
영화정보를 예시로 만들기 위해 해당 정보를 담을 수 있는 그릇에 해당되는 Schema를 만들어 봅니다.
만들 때 mongoose.Schema() 를 사용합니다.
영화정보(제목, 출시연도, 평점, 등급정보)를 예시로 다음과 같이 만들어 봅니다.
const movieSchema = new mongoose.Schema({
title: String,
year: Number,
score: Number,
rating: String,
});
3. Model 만들기
필요한 데이터 항목으로 구성한 Schema 에 해당하는 모델을 만듭니다.
모델명의 첫글자는 대문자이며, 단수로 지정합니다. 이렇게 정의하면 자동으로 집합(복수형)을 만들어 줍니다.
mongoose.model(모델명, 스키마) 로 만들면 됩니다.
const Movie = mongoose.model("Movie", movieSchema);
4. 샘플 데이터 입력하기
만들어진 모델을 활용하여 다음과 같이 데이터를 입력합니다.
const amadeus = Movie({
title: "Amadenus",
year: 1986,
score: 9.2,
rating: "R",
});
5. 입력한 데이터를 DB에 접속하여 확인하기
터미널에서 $ node 를 실행하면 CLI 로 전환됩니다.
여기서 .load 로 index.js 를 불러오면 "connection open" 으로 정상적으로 DB 연결된 것 확인합니다.
> .load index.js
이어서 입력한 데이터인 amadeus 를 입력하면 해당 인스턴스가 조회됩니다.
실제 DB에 저장되었는지 확인하기 위해 터미널에서 mongo CLI 를 실행하고, DB이름인 movieApp 으로 전환하여 입력된 데이터를 확인합니다.
$ mongo
$ use movieApp
$ db.movies.find()
-> 아무 것도 나오지 않는데 아직 amadeus 영화정보가 DB에 저장된 것이 아닙니다.
실제 저장하기위해 save() 를 이용합니다.
Promise가 나오지만 바로 저장됩니다.
이제 mongo CLI 에서 다시 데이터를 조회해 봅니다.
이제 집합에 포함된 새로운 문서인 영화정보가 표출됩니다.
영화정보를 수정할 경우 우선 node CLI 에서 amadeus.score = 9.5 같이 해당 항목의 값을 직접 바꿀 수 있으나 DB에 반영되기 위해서서는 다시 amadeus.save() 를 실행합니다.
다시 mongo CLI에서 데이터를 조회해보면 score가 9.2 -> 9.5 로 변경된 것을 확인할 수 있습니다.
지금까지 Model의 메서드중 find() 만 사용했지만 다음과 같이 다양한 메서드를 앞으로 사용해보고자 합니다.
'데이터베이스' 카테고리의 다른 글
mongoose 데이터 삭제하기 - REPL 사용 (0) | 2023.07.30 |
---|---|
mongoose로 데이터 찾기 (0) | 2023.07.26 |
mongoose로 대량의 데이터 입력하기 (0) | 2023.07.24 |
MongoDB 데이터 생성 및 조회 (0) | 2023.07.18 |
mongoose 스키마와 모델 (0) | 2023.07.18 |