개발관련/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 |