
사지방 즉 군대에서 코딩하는 것이 힘든 이유는 여건이 좋지 않기 때문이다.
노트북 없이 전원을 끄면 깐 프로그램들이 다 초기화되는 pc를 가지고 코딩을 하기에 goormIDE와 같이 클라우드에 코딩을 해야 한다.
이번에 또 도전 과제가 생겼다. MySql을 사용해야 한다. 그냥 MySql이 아니라 MySql 워크벤치라는 것을 통해서 진행을 하던데, 이를 어떻게 해결해야 할지.. 찾아봅세다.
위 페이지를 보았지만 결국 포트포워딩으로 IP와 외부포트 번호등을 알아내서 MySql 프로그램에 입력하는 방식이라 프로그램을 깔지 못하는 나로서는 할 수 없는 방식이다.
(공군.. 패드 되는 김에 노트북도 허용해줘..)
내 생각에는 MySql 워크벤치가 그냥 java, sql, nodeJs와 같은 언어, 기술이 아니라 intellij, eclipse와 같은 기술을 이용하는 프로그램이라서 goormIDE에서는 사용방도가 없는 것 같다.
우선 sql 강의는 건너뛰고 noSQL인 mongoDB강의로 가보자.
mongoDB는 될 수도 있으니까.
위의 사이트를 참고해서 mongoDB를 goormIDE에서 사용하는데 성공했다.
noSql 데이터베이스 중 매우 인기있고 효율적인 데이터베이스
sql은 모든 데베에서 사용되는 언어이지만 mongoDB와 같은 noSql은 일반적으로 고유한 쿼리 언어를 사용한다.
https://www.mongodb.com/ko-kr
웹사이트 방문을 통해 더 자세히 알아볼 수 있다.
웹사이트를 방문해서 데이터가 저장되는 방식을 보니 nodeJS의 객체와 상당히 유사했다.
.>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를 얻는다.
참고로 위쪽 화살표를 누르면 위의 명령어가 빠르게 복붙된다.

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})
findOne() 메소드를 사용해서 찾을 수 있다.
findOne() 메소드 안에 조건을 넣고 찾으면 그 조건에 맞는 문서 혹은 조건에 맞는 문서들 중 가장 첫 번째 문서를 보여준다.
db.restaurants.findOne({name: "Burger House"})

데이터를 수정하고 싶다면 update 메소드를 사용하면 되는데, 이것도 find와 마찬가지로 updateOne, updateMany가 있다.
db.restaurants.updateOne({_id: ObjectId("65c1f9015d12258c3ae3360d")}, {$set: {"address.street": "Some Street" }})
이런식으로 데이터를 찾아서 $set을 통해 일종의 덮어쓰기를 통해서 수정을 해주면 된다.

데이터를 삭제하고 싶다면 delete 메소드를 사용하면 되는데, 이것도 find, update와 마찬가지로 deleteOne, deleteMany가 있다.
db.restaurants.deleteOne({_id: ObjectId("아이디 입력")})
이런 식으로 데이터 삭제가 가능하다.
사실 강의에서는 MySQL(SQL)과 MongoDB(noSQL)을 다 다루고 mySQL 먼저 하고 그다음 mongoDB였는데, mySQL 워크벤치를 이용할 수 없어서 이렇게 MongoDB를 하게 되었다.
그래도 둘 중 한 개라도 되서 무척 다행이라고 생각한다.
둘 다 안됐으면 정말 사고니까 거기다 강의가 주된 데베는 mongoDB를 이용해서 앞으로 강의를 듣는데는 지장이 없을 것 같다.
그럼 이만:)