goormIDE에서 DB를 사용해보자:)

김유담·2024년 2월 6일

html/css/js

목록 보기
11/13
post-thumbnail

👨‍💻 goormIDE에서 MySQL 사용을 위한 나의 노력과 실패

사지방 즉 군대에서 코딩하는 것이 힘든 이유는 여건이 좋지 않기 때문이다.
노트북 없이 전원을 끄면 깐 프로그램들이 다 초기화되는 pc를 가지고 코딩을 하기에 goormIDE와 같이 클라우드에 코딩을 해야 한다.

이번에 또 도전 과제가 생겼다. MySql을 사용해야 한다. 그냥 MySql이 아니라 MySql 워크벤치라는 것을 통해서 진행을 하던데, 이를 어떻게 해결해야 할지.. 찾아봅세다.

https://itadventure.tistory.com/598#recentComments

위 페이지를 보았지만 결국 포트포워딩으로 IP와 외부포트 번호등을 알아내서 MySql 프로그램에 입력하는 방식이라 프로그램을 깔지 못하는 나로서는 할 수 없는 방식이다.
(공군.. 패드 되는 김에 노트북도 허용해줘..)

내 생각에는 MySql 워크벤치가 그냥 java, sql, nodeJs와 같은 언어, 기술이 아니라 intellij, eclipse와 같은 기술을 이용하는 프로그램이라서 goormIDE에서는 사용방도가 없는 것 같다.

👨‍💻 goormIDE에서 MongoDB 사용

우선 sql 강의는 건너뛰고 noSQL인 mongoDB강의로 가보자.
mongoDB는 될 수도 있으니까.

https://m.blog.naver.com/goorm_official/221791616724

위의 사이트를 참고해서 mongoDB를 goormIDE에서 사용하는데 성공했다.

👨‍💻 NoSQL

  • sql이 열과 행을 이용하는 table을 사용하는 것과 달리 noSql은 collection(일종의 데이터 컨테이너)을 사용한다.
    그리고 collection 안에 자바 스크립트의 객체와 같이 생긴 document들을 넣고 저장한다.
  • 동일한 컬레션에 저장된 문서들이 같은 형식을 가질 필요x
  • 데이터간 관계 지원
  • sql에 비해 유연성은 떨어질 수 있지만 쿼리에 대해 미리 구상을 안하고 만들어도 되서 더 간단할 수 있다.

👨‍💻 MongoDB

  • noSql 데이터베이스 중 매우 인기있고 효율적인 데이터베이스

  • sql은 모든 데베에서 사용되는 언어이지만 mongoDB와 같은 noSql은 일반적으로 고유한 쿼리 언어를 사용한다.

    https://www.mongodb.com/ko-kr
    웹사이트 방문을 통해 더 자세히 알아볼 수 있다.

  • 웹사이트를 방문해서 데이터가 저장되는 방식을 보니 nodeJS의 객체와 상당히 유사했다.

👨‍💻 MongoDB 데이터 삽입

.>use ratingportal
switched to db ratingportal

.> db.restaurants.insertOne({name: "Munich Schnitzelhouse", address: {street: "Some Street 5" , streetNumber: "23b"}})
{
"acknowledged" : true,
"insertedId" : ObjectId("65c1f9015d12258c3ae3360d")
}

.> db.restaurants.insertOne({name: "Burger House", address: {street: "Another Street 5" , streetNumber: "15"}})
{
"acknowledged" : true,
"insertedId" : ObjectId("65c209585d12258c3ae3360e")
}

  • use ratingportal : use "데이터베이스 이름"을 입력하면 데이터베이스를 만들고 그 데이터베이스를 활성화 시킨다.

  • db.restaurants.insertOne({name: "Munich Schnitzelhouse", address: {street: "Some Street 5" , streetNumber: "23b"}}) :
    db: 현재 활성화된 db를 참조하도록 하기
    restaurants: mongoDB에 삽입할 컬렉션 이름(없으면 자동 생성됨)
    insertOne(): 메소드로 한개의 데이터를 삽입할 수 있다. 참고로 여러 개의 데이터를 삽입할 수 있는 inserMany()라는 메소드도 있다.
    name, address: 필드(키) 이름이다. 이런 데이터들을 넣을 때는 중괄호로 감싸줘야하며 address 키 처럼 구조화된 문서를 가질 수도 있다.

  • 그리고 위와 같이 데이터를 삽입하면 insertedId라는 필드를 통해 삽입된 문서에 대한 고유한 ID를 얻는다.

  • 참고로 위쪽 화살표를 누르면 위의 명령어가 빠르게 복붙된다.

👨‍💻 MongoDB 데이터 읽기

모든 문서를 읽고 싶다면?

db.restaurants.find()

활성화된 데베에서 컬렉션 선택하고 find() 메소드를 이용하면 모든 데이터들이 표시된다.

필터링을 하고 싶다면?

db.restaurants.find({ name: "Munich Schnitzelhouse" })

이런식으로 find 메소드 안에 조건을 넣어서 필터링을 할 수 있다.

문서들의 한 필드만 보고 싶다면?

db.restaurants.find({}, {name: 1})

이렇게 하면 데이터들의 이름만 나온다. 물론 id값은 디폴트라서 같이 나오는데 이또한 보기가 싫다면 id값을 0으로 설정하여 안보이게 할 수 있다.

db.restaurants.find({}, {name: 1, _id: 0})

문서들 중 원하는 문서 1개만 보고 싶다면?

findOne() 메소드를 사용해서 찾을 수 있다.
findOne() 메소드 안에 조건을 넣고 찾으면 그 조건에 맞는 문서 혹은 조건에 맞는 문서들 중 가장 첫 번째 문서를 보여준다.

db.restaurants.findOne({name: "Burger House"})

👨‍💻 MongoDB 데이터 수정

데이터를 수정하고 싶다면 update 메소드를 사용하면 되는데, 이것도 find와 마찬가지로 updateOne, updateMany가 있다.

db.restaurants.updateOne({_id: ObjectId("65c1f9015d12258c3ae3360d")}, {$set: {"address.street": "Some Street" }})

이런식으로 데이터를 찾아서 $set을 통해 일종의 덮어쓰기를 통해서 수정을 해주면 된다.

👨‍💻 MongoDB 데이터 삭제

데이터를 삭제하고 싶다면 delete 메소드를 사용하면 되는데, 이것도 find, update와 마찬가지로 deleteOne, deleteMany가 있다.

db.restaurants.deleteOne({_id: ObjectId("아이디 입력")})

이런 식으로 데이터 삭제가 가능하다.

👨‍💻 후기

사실 강의에서는 MySQL(SQL)과 MongoDB(noSQL)을 다 다루고 mySQL 먼저 하고 그다음 mongoDB였는데, mySQL 워크벤치를 이용할 수 없어서 이렇게 MongoDB를 하게 되었다.
그래도 둘 중 한 개라도 되서 무척 다행이라고 생각한다.
둘 다 안됐으면 정말 사고니까 거기다 강의가 주된 데베는 mongoDB를 이용해서 앞으로 강의를 듣는데는 지장이 없을 것 같다.
그럼 이만:)

profile
잘하진 못할지언정 꾸준히 하는 개발자:)

0개의 댓글