DB/MongoDB 정리

Mongo DB 튜토리얼 1. CRUD

100win10 2019. 9. 10. 09:48

id 12바이트  현재 타임스태프 4, 서버값3, insert시킬때마다 하나의 프로세스가 도는데 프로세스마다의 식별자 2, 순서 3으로 구성된다





문서의 개수나, 크기, 내용이 다 다르다.


하나의 구조가 명확하다. 구조화된 json 문서를 말하는 것


조인이 필요없다.


쿼리기능이 상당히 다양하다. 거의 sql처럼 강력한 쿼리 기능을 제공




4.0/bin에 mongod가 서버 mongo 가 클라이언트 툴이다.


mongod를 실행해놓고 mongo를 통해 서버를 접속할 것.


명령창에서 원래는 /bin까지 들어가야 하지만 path 환경변수를 수정하여 바로 사용할 수 있도록 해주자


데이터 저장 폴더는 c:\data\db 로 두자.



md data



첫 번째 명령창을 열어서




mongoDB서버 가동

-mongod --dbpath c:\data\db


두번째 명령창을 열어서




-mongo (localhost:27017)  를 통해 client 툴 띄우자









mongoDB 에서는 RDBMS JOIN 에 필요한 관계성이 원본 포스팅에 임베디드된 형태로 표현된다. 


즉 관계형 db에서 필요한 조인이 필요가 없다.

 



>mongo는 즉 (mongo shell은) 자바스크립트 기반으로 동작한다.


우선 데이터베이스를 만들고 컬렉션을 만들고 그 안에 문서를 집어넣어야 한다.


데이터 베이스를 만드는 명령어는


use DATABASE_NAME 이다.


1) DATABASE_NAME이 있을시  ==> 사용한다.


2) 없을시 ==> 새로 만든다.



문서를 삽입시 insert ( json 객체로)


db.movie.insert({"name":"korea"}) 


1쌍짜리 json 문서 객체를 insert 해라. 사실 문서 insert전 컬렉션을 만들어야 하는데


db -> 현재 선택된 db // mydb 이고


movie -> 새로운 컬렉션이 없다면 만든다



처음에는 use mydb -> show dbs를 해도 보이지않지만 insert후에는 데이터가 있기 때문에 show dbs시 보이게 된다.



몽고 DB에 default DB의 이름은 test이다. 



DB전체를 제거하고 싶을시 db.dropDatabase() // 이떄 db는 현재 선택 db


안에 내용 다 날라간다.



컬렉션만들기




db.createCollection(name,options)


Options의 Type은 document이다.(Json 객체)

ex ) db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } ) 


capped: default는 false, true로 할 시 capped collection이 됨. 즉 크기가 고정된다. 고정된 용량 초과로 온다면 오래된 것을 지운다


size: 크기 정함


autoIndexID : default는 false, true시 key값 기준으로 인덱스 생성한다.


max : capped collections일 경우 최대용량값 저장.



컬렉션을 꼭 만들 필요는 없다. 

ex) db.movie.insert({"name":"korea"}) 



컬렉션제거

db.컬렉션이름.drop()



3.2 이후 

insert로 해도 되지만 insertOne, insertMany를 통해 하나의 싱글문서나 다수의문서를 넣어줄수 있다.



검색하는 메소드는 find()


db.컬렉션이름.find()


(find().pretty() 는 좀더 보기 좋은 형태로 출력해준다)



db.컬렉션명.find(<검색조건>, <프로젝션>) // 검색조건, 프로젝션은 옵션


= select < 프로젝션 > from 컬렉션명 where <검색조건> ( RDBMS )



검색조건역시 문서 형식으로 표현 해야 한다.

예 ) { <키>:<값>, <키>:{<연산자>:<값>},...}




Equality는 $eq이지만 가장 많이쓰기에 생략해도 가능하다.


p23까지