Published on

MongoDB

Authors
  • avatar
    Name
    Inhwan Cho
    Twitter

데이터베이스 DB

데이터베이스는 전자적으로 저장되고 체계적인 데이터 모음입니다. 여기에는 단어, 숫자, 이미지, 비디오 및 파일을 포함한 모든 유형의 데이터가 포함될 수 있습니다.

DB에는 크게 2종류가 있습니다.

  • 관계형 데이터베이스(Relational Database, SQL) ex) Amazon RDS, ORACLE, MySQL, PostgreSQL table(행과 열)을 사용하여 엑셀처럼 데이터를 한줄씩 입력. 단, 데이터 사용에 SQL문법을 사용해야하며, 중복데이터를 정규화해서 입력해야함 데이터 정확도가 중요한 경우 사용

  • 비관계형 데이터베이스(NoSQL) 보다 자유로운 형식의 저장 방식. 대부분 JSON(key-value) 형태로 저장함 중복을 제거하고 저장하지 않아서 입출력을 빠르게할 수 있음.


DB에서 입출력은 유저가 직접하게 하면 안됩니다. 입출력 사이에 검열을 위한 필터(서버)가 필요합니다.

MongoDB

몽고DB는 비관계형 데이터베이스의 대표적인 DB입니다. 'document data'라고도 불리며, collection(엑셀-시트)을 하나 만들고 document(엑셀-행)을 만들어 document에 JSON(Object) 타입으로 데이터들을 저장하는 형식입니다.

import { MongoClient } from 'mongodb'
let db
// MongoDB에 연결.
const url = 'mongodb+srv://id:password@.......'
new MongoClient(url)
  .connect()
  .then((client) => {
    console.log('MongoDB 연결 성공')
    db = client.db('MongodbName') //데이터베이스 이름 입력
  })
  .catch((error) => {
    console.log(error)
  })

app.get('/', async (request, response) => {
  //콜렉션에 모든 데이터 불러오기
  let result = await db.collection('collectionName').find().toArray() 
})

만약, MongoServerSelectionError ... Timeout error가 나온다면, 몽고DB 사이트 왼쪽에 Network Access를 눌러서 해당 기기의 IP를 등록(재등록) 해주면 됩니다.

참고로 prisma와 mongoDB를 연결할때,

.env
DATABASE_URL="mongodb+srv://<YOURID>:<YOURPASSWORD>@cluster0.v1pcsxx.mongodb.net/<YOURPROJECTNAME>?retryWrites=true&w=majority"

// projectName은 mongodb atlas 왼쪽 위에 폴더 모양에서 확인 할 수 있습니다.