'MongoDB'에 해당되는 글 12건
- 2015.10.30 :: mongodb 의 update, delete
- 2015.10.30 :: mongDB create table 및 색인 생성
lucene 과 마찬가지로 몽고 디비 역시 update는 미존재 한다. 그러나 api 는 지원 고로 remove후 다시 쓴다는 개념이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //update db.userCollection.update( { "user": "zest133" }, { "user" : "gno", "name" :"gno", "phone" : "111-1111-1111", "idx" : 1 } } //select all db.userCollection.find() | cs |
위에 코드와 같이 첫번째 object는 set을 의미 , 두번째 object는 where절 쯤 (?) 으로 생각.
쿼리를 날리고 결과를 확인하면 기존의 row가 두번재 object 형태로 변경된다. 이때, 이상한 점이 발견될 듯. update가 아니라 걍 delete 후 insert한 결과 형태로 변경된다.
그럼 변경하고 싶은 컬럼만 바꾸고 싶다면? 다음과 같이 하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //update db.userCollection.update( { "user": "gno" }, { $set :{ "user" : "gno", "name" :"gno", "phone" : "111-1111-1111", "idx" : 1 } } ) //select all db.userCollection.find() | cs |
두번째 object 에 $set이라는 내장 변수(?)를 써서 쿼리를 던지면 rdb의 update처럼 변경된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //$inc = plus, minus //$mul = mutiply, divide // db.userCollection.update( { "user": "gno" }, { $mul :{ "idx" : 1/2 } } ) | cs |
또, 숫자를 변경하고 싶다면, $mul을 사용해서 사용.
1 2 3 4 5 6 7 8 9 10 11 | db.userCollection.update( { "user": "gno" }, { $unset :{ "phone" : 1 } } ) | cs |
특정 컬럼을 제거 하고 싶다면 $unset을 해주고 컬럼 : 1 을 해준다. '1'은 true라는 개념인듯 하다.
1 2 3 4 5 6 7 8 9 10 | db.userCollection.update( { "user": "gno" }, { $set :{ "family" : ['mom','bro','sis'] } } ) | cs |
배열 형태로 바꾸거나 추가 할 컬럼은 위와 같이 사용하면된다.
삭제시 remove 라는 api를 이용해 삭제
1 2 3 4 5 6 | //delete db.userCollection.remove( { "user":"gno" } ) | cs |
몽고 db는 기본적으로 json 구조를 쓰며 js와 매우 흡사한 형태(?)로 query 를 날린다.
내부 api를 이용하여 만드는 구조인듯 보인다.
머 몽고 db역시 document 구조라 lucene과 비슷한 형태
Collection은 table, document 는 일종의 row , column은 field로 칭한다.
다음과 같이 쿼리를 날리면 특정 db를 사용하게 된다. 만약 db가 없으면 생성하게 된다.
1 2 | use testDB | cs |
insert 시 db.사용할 컬렉션.insert() 를 하면 row가 생성된다. 이때, 컬렉션이 존재 하지 않으면 생성 하면서 저장하게 된다.
type은 string, date, double 를 지원한듯 보인다.
1 2 3 4 5 6 7 8 9 10 11 | //insert query db.userCollection.insert( { "user":"zest133", "pwd" :"zest133", "name" :"zest133", "email": "zest133@test.com", "date" : new Date() } ) | cs |
색인 컬럼은 다음과 같이 설정.
1 2 3 4 5 6 7 | //insert index db.userCollection.ensureIndex( { "user" : 1 } ) | cs |
배열 색인은 다음과 같이 설정.
1 2 3 4 5 6 | //create array index db.userCollection.createIndex( { "family" : 1 } ) | cs |
createIndex를 사용하여, 특정 json array 컬럼 :1 을 하면된다. 재미난 점은 배열안에 값들이 내부적으로 색인이 된다.