몽고 DB

송현섭 ·2024년 1월 5일
0

백엔드

목록 보기
4/15
post-thumbnail



몽고DB 설치



Homebrew 설치

  • Mac의 경우 설치에 앞서 설치관련 Tool 인 Homebrew를 설치해야 함

  • Homebrew 공식 사이트에 접속 후 설치 코드 복사

    Homebrew = Mac OS 용 패키지 관리 프로그램






  • 이후 터미널에 코드를 붙여넣기 하여 Mac에 설치






  • 몽고DB 설치링크 로 들어가서 좌측의 Installation 탭 클릭

  • 각 설치가능 항목 중 Install MongoDB Community Edition 탭 클릭






  • 이후 DOCS에 따라 brew 명령어로 각각 설치






+a) MongoDB 설치 버전 체크

  • brew search mongodb 명령어로 설치 가능한 mongoDB 버전 확인 가능

  • 이후 원하는 버전을 brew install [mongoDB - version] 으로 설치
    *헌재 개인 공부 기준으로는 4.4 version 으로 설치함







  • 이후 안내 문구에 따라 명령어를 입력하여 실행

  • echo 'export PATH="/opt/homebrew/opt/mongodb-community@4.4/bin:$PATH"' >> ~/.zshrc
    => shell 구성에 설치 PATH 를 추가하여 터미널 상에서 shell을 통해 mongoDB 명령어 실행이 가능토록 함

  • brew services start mongodb/brew/mongodb-community@4.4
    => mongoDB 서비스가 백그라운드에서 실행가능토록 함






+a) mongoDB compass 설치


  • mongoDB compass는 MongoDB에서 제공하는 GUI 환경의 MongoDB 클라이언트

  • 보다 편리한 환경에서 mongoDB를 사용가능하도록 해주는 Tool











  • 이후 본인 환경에 맞는 걸로 골라서 설치






  • 설치 후 실행해 보면 위와 같이 기본 URI가 지정되어 있음
    *mongoDB에서 사용되는 default 주소값











몽고DB 사용하기








  • 사용 가능한 언어들 중 Node.js 선택







  • 관련 기초항목 중 몽고DB에 연결 클릭






  • 연결 방법 관련 Docs에서 코드 확인하고 적용가능







  • mongoDB 연결을 테스트해보기 위해 프로젝트 폴더를 생성해줌 (ex. mongodbTest)

  • 이후 yarn init -y 로 패키지 관리를 위한 pacakage.json 파일을 프로젝트 내에 설치
    *추후 yarn 패키지 관리자로 설치할 mongoDB 를 위한 선행작업







  • 이후 yarn add mongodb 로 mongodb를 의존성 설치







  • 이후 app.js 파일을 하나 만든 다음 위와 같이 작성하여 MongoClient를 꺼내옴

    *해당 uri 부분은 현재는 mongodb compass 의 기존 default 로컬 주소로 지정 (react의 default 로컬 주소인 localhost:3000과 같은 맥락)







  • 다음으로 MongoClient 객체에 uri를 넣어서 해당 DB주소를 통해 데이터베이스를 연결해 줌







  • 실행함수 내부에 사용할 database를 만들고 임의로 이름 지정 (ex. firstDB)

  • 만들어 둔 database의 하위개념(collection)을 생성 (ex. user 정보를 담는 users Collection)







  • 이후 만들어 둔 데이터베이스 의 collection인 users에 insertOne 메서드를 사용해서 name, age 값이 들어있는 객체를 데이터로 전달 (CRUD 중 CREATE에 해당)

  • 데이터베이스에 data를 전달하는 것은 시간이 걸리는 과정
    async, await으로 비동기 처리가 필요

  • CRUD 관련 Docs 를 통해 각 필요 메서드를 찾아서 활용 가능







  • 이후 node app.js 로 실행함수를 실행시켜보면 함수 내부 로직에 따라 데이터베이스 생성 후 컬렉션 추가, 해당 컬렉션에 지정한 CRUD 요청이 들어갔음을 터미널 로그로 확인 가능







  • 이후 mongodb compass 에서 firstDB 라고 앞서 지정한 database가 생성된 것 확인 가능

  • database 내부의 users 컬렉션에 앞서 요청한 값이 data 로 추가되어 있음을 확인 가능







+a) CRUD 예제 1 (Create)


  • insertMany 메서드로 배열type의 data를 database로 보냄







  • 마찬가지로 node 명령어로 실행 시 결과 로그를 확인 가능







  • compass 에서도 database에 각 data들이 제대로 저장되어 있는 것을 확인 가능







+a) CRUD 예제 2 (Read)


  • findOne 메서드를 활용해서 기존의 database 안에 존재하는 데이터들 중에 조건에 해당하는 data만 필터링 해서 조회도 가능







  • 마찬가지로 실행결과 로그를 통해 제대로 데이터 값을 찾아오는 것 확인 가능







+a) CRUD 예제 3 (Read)

  • 공식 Docs에 따르면 database 내의 모든 data를 조회하려면 find() 내부 인자에 아무것도 넣지 않거나 빈 객체를 넣으면 됨







  • 이 경우 콘솔로그를 출력해 보면 위와 같이 각 data 정보가 아닌 cursor 객체가 찍히는 것을 확인할 수 있음




Cursor 객체

  • mongoDB 에서는 find 같은 메서드로 data를 Query로 조회 시 바로 해당 데이터 문서들을 가져오지 않음

  • 대신 Cursor 라는 객체에 해당 위치정보를 담아서 이를 반환

  • 이후 toArray 같은 메서드로 실제 서버에 data를 요청하여 클라이언트 측으로 받아옴
    *이 같은 동작방식을 통해 Query 결과를 클라이언트 서버 메모리에 모두 할당하지 않고도 처리가 가능하게 됨

    Cursor 메서드 Docs







+a) CRUD 예제 4 (Update)

  • 공식 Docs에 따라 코드 작성 후 첫 번째 인자에는 update 대상을, 두 번째 인자에는 수정할 데이터값을 입력






  • 이후 로그 기록을 통해 요청이 정상적으로 진행된 것을 확인 가능
  • mongodb Compass 에서도 data값이 변경된 것을 확인 가능







+a) CRUD 예제 5 (Delete)

  • 삭제의 경우도 마찬가지로 메서드 내부 인자에 지정값을 넣어서 요청을 보내면 됨






  • console 로그에 정상적으로 요청결과가 출력되는 것 확인 가능
profile
막 발걸음을 뗀 신입

0개의 댓글

관련 채용 정보