'MongoDB'에 해당되는 글 12건

  1. 2015.10.30 :: mongodb 의 update, delete
  2. 2015.10.30 :: mongDB create table 및 색인 생성
개발관련/MongoDB 2015. 10. 30. 14:05

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


posted by 제스트
:
개발관련/MongoDB 2015. 10. 30. 13:45

몽고 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 을 하면된다. 재미난 점은 배열안에 값들이 내부적으로 색인이 된다. 


posted by 제스트
: