DS-Corner-Study / YUZ

0 stars 1 forks source link

8장 MongoDB #19

Open yellow-jam opened 7 months ago

yellow-jam commented 7 months ago

Nosql vs. SQL

image

몽고디비 사용하기

MongoDB Community Server 다운로드 https://www.mongodb.com/try/download/community

몽고디비 포트는 27017번 cd "C:\Program Files\MongoDB\Server\7.0\bin" 몽고디비 실행: mongod --ipv6 몽고디비 접속: mongosh 데이터베이스 관리자 계정 만들기: use admindb.createUser({ user: '이름', pwd: '비밀번호', roles: ['root'] })

몽고디비 로그인 요구 실행 mongod --ipv6 --auth 로그인 mongosh admin -u [이름] -p [비밀번호]

MongoDB 셸 다운로드 https://www.mongodb.com/try/download/shell 설치경로 C:\Users\USER\AppData\Local\Programs\mongosh\

yellow-jam commented 7 months ago

데이터베이스 및 컬렉션 생성하기

몽고디비의 '컬렉션' = mysql의 '테이블'

yellow-jam commented 7 months ago

CRUD 작업하기

몽고디비의 자료형

Create(생성)

Update(수정)

Delete(삭제)

yellow-jam commented 7 months ago

몽구스 사용하기

MySQL에 시퀄라이즈가 있다면, 몽고디비에는 몽구스(mongoose)가 있다

몽구스 패키지 설치 npm i mongoose npm i express morgan nunjucks mongoose npm i -D nodemon

몽고디비 연결 주소 형식: mongodb://[username:password@]localhost[:port][/[database][?options]] 예: mongodb://YUZ:0000@localhost:27017/admin

// schemas/index.js
const mongoose = require('mongoose');

const connect = () => {
  if (process.env.NODE_ENV !== 'production') {
    mongoose.set('debug', true);
  }
  mongoose.connect('mongodb://YUZ:0000@localhost:27017/admin', {
    dbName: 'nodejs',
    useNewUrlParser: true,
  }).then(() => {
    console.log("몽고디비 연결 성공");
  }).catch((err) => {
    console.error("몽고디비 연결 에러", err);
  });
};

mongoose.connection.on('error', (error) => {
  console.error('몽고디비 연결 에러', error);
});
mongoose.connection.on('disconnected', () => {
  console.error('몽고디비 연결이 끊겼습니다. 연결을 재시도합니다.');
  connect();
});

module.exports = connect;

image

스키마 정의하기

// schemas/user.js
const mongoose = require('mongoose');

const { Schema } = mongoose;
const userSchema = new Schema({
  name: {
    type: String,
    required: true,
    unique: true,
  },
  age: {
    type: Number,
    required: true,
  },
  married: {
    type: Boolean,
    required: true,
  },
  comment: String,
  createdAt: {
    type: Date,
    default: Date.now,
  },
});

module.exports = mongoose.model('User', userSchema);

image