All Articles

MongoDb?

Node로 api를 만드는데 MongoDb를 사용하려고 한다. 잠깐 MongoDb를 공부하고 넘어가보자. 모두 MongoDb 사이트 첫 장에 나오는 내용이다.

  • MongoDB는 모던 앱 개발자를 위해 만들어진 문서 기반의 분산 데이터베이스다.
  • 문서 기반이라는 말은? 데이터가 마치 JSON 처럼 생긴 문서 데이터가 저장되어있다는 말이다. 데이터를 설계하고 생각하는데 있어서, 전통적인 row/column 모델보다 훨씩 직관적이라고 생각하기 때문에 만들어졌다.
  • NoSQL(Not only SQL) 데이터베이스인데, 기존 SQL방식의 관계형 데이터베이스의 제한적인 모델 없이도 데이터를 저장하고 가져올 수 있는 기술이다.

데이터 구조를 먼저 보는 것이 좋겠다.

Collection

collection은 기존 SQL 데이터베이스의 테이블같은 것이다. MongoDb는 collection으로 데이터를 하나로 묶는다. MongoDB에서 collection은 엄격한 스키마를 지키지 않는다. collection 안의 document들은 필요에 따라 서로 조금 다른 구조를 갖을 수 있다. 위에서도 두 번째 문서에는 profile이 없다.

Document

document는 기존 SQL 데이터베이스의 row(행)같은 것이다. collection은 한 개 이상의 document로 이루어져 있다. MongoDb의 데이터 구조는 Javascript의 object처럼, 혹은 JSON처럼 key와 value로 구성되어있다. 이런것을 BSON이라고 부른다. BSON은 이진 JSON(binary representation of JSON documents) 인데, JSON보다는 조금 더 다양한 데이터 타입을 지원한다고 한다.

설치

아래꺼 순서대로

brew tap mongodb/brew
brew install mongodb-community@4.0

첫 번째 안 하면 아래처럼 에러남 ㅎㅎ

Error: No available formula with the name “mongodb-community@4.0” ==> Searching for a previously deleted formula (in the last month)… Warning: homebrew/core is shallow clone. To get complete history run: git -C ”$(brew —repo homebrew/core)” fetch —unshallow Error: No previously deleted formula found. ==> Searching for similarly named formulae… Error: No similarly named formulae found. ==> Searching taps… ==> Searching taps on GitHub… Error: No formulae found in taps.

시동

하나의 터미널을 열고 아래의 명령어로 MongoDB를 시작한다.

mongod --config /usr/local/etc/mongod.conf

이 상태에서 새 탭을 열고 mongo 명령어를 쳐보면 접속할 수 있다. 아래와 같이 나오면 접속 성공!

➜  ~ mongo
MongoDB shell version: 3.0.7
connecting to: test

시동도 안 하고 mongo로 접속하려고 하면 아래의 에러 뜸 ㅎㅎ

MongoDB shell version: 3.0.7 connecting to: test 2019-06-27T02:58:19.114+0900 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused 2019-06-27T02:58:19.116+0900 E QUERY Error: couldn’t connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at connect (src/mongo/shell/mongo.js:179:14) at (connect):1:6 at src/mongo/shell/mongo.js:179 exception: connect failed

자세히는 MongoDb 문서 참조

reference