mongo db 의 장단점
https://meetup.toast.com/posts/275
$ brew tap mongodb/brew
$. brew install mongodb-community
$. brew services start mongodb-community
$ mongo
관리자 계정 추가하기
> use admin
> db.createUser({ user:'이름' , pwd:'비밀번호', roles:['root']})
successfully added user 가 뜨면 정상정으로 만들어 진거다.
$ brew services stop mongodb-community
내용 추가하기
$ vim /usr/local/etc/mongod.conf
A 를 누르면 입력 할 수 있다 입력후 esc 누르고 :wq! 엔터 치면 저장이 된다.
...
security:
authorization: enabled
$ brew services start mongodb-community
$ mongo admin -u [이름] -p [비밀번호]
여기까지 설치가 된 것.
데이터 베이스 및 컬렉션 생성
- 데이터 베이스 생성
> use nodejs
- 데이터 베이스 목록 확인
방금 만든 데이터 베이스는 안뜬다 1개 이상의 정보가 담겨있어야 뜬다.
> show dbs
당황하지 말고
> db
를 치면 현재 사용중인 db 이름이 뜨게 된다.
컬렉션 만들기 (mysql 에서는 테이블 역할)
> db.createCollection('users')
{ "ok": 1 } 가 뜨면 정상적으로 만들어 진것이다.
컬렉션 목록 확인하기
> show collections
CRUD 작업하기
Create(생성)
> db.users.save({name:'zero',age:24,createdAt: new Date() });
Read(읽기)
> db.users.find({name:'zero'})
안에 조건을 안넣으면 모두 조회된다.
> db.users.find({},{name:1,married:0})
이렇게 모두 조회해서 name 만 보고싶으면 두번째인자에 조건을 달면된다.
1 이 표시 0이 표시하지 않음
조건문
$gt (초과) , $gte (이상) , $lt (미만) , $lte(이하) , $ne (같지 않음) ,$or (또는) ,$in (배열 요소 중 하나)
나이가 20이초과 되는 사람의 나이와 이름만 보겠다
> db.users.find({age:{$gt:20}},{age:1,name:1})
OR 구문
나이가 30 초과 또는 이름이 zero 일 경우
> db.users.find({$or:[{age:{$gt:30}},{name:'zero'}] }
정렬
정렬도 할 수 있는데 sort 을 활용해서 -1 은 내림차순 1 은 오름 차순을 의미한다.
나이만 내림차순으로 보겠다.
> db.users.find({},{age:1}).sort({age:-1}
limit 구문
> db.users.find({}).limit(2)
skip 구문
> db.users.find({}).skip(2)
이 외 에도 많은 쿼리 구문이 있지만 가장 기본적인 구문은 이다.
Update (수정)
첫번째 객체는 수정할 다큐먼트 두번째 객체는 수정할 내용
만약 $set 을 안쓰고 일반 객체에 담으면 다큐먼트 통째로 두버째 인자 값으로 바뀌기 때문에 일부 수정 할 경우 꼭 써야 한다.
> db.users.update({name:'zero'},{$set:{comment:'안녕 수정 중이야'} });
Delete (삭제)
첫번째 객체에 삭제할 것 의 조건을 달면된다.
> db.users.remove({ name: 'nero})
mongoose (몽구스) 사용하기
$ npm i express morgan nunjucks mongoose
https://github.com/dnjzm108/mongodb_first