mongodb 는 기존 rdb와는 구조부터가 다릅니다. 데이블(mongodb 에서는 컬렉션이라 부릅니다만 테이블로 통용하겠습니다.) 의 foreign key 가 없기 때문에 테이블간의 join 이 어려우며 비정형테이블이기 때문에 한테이블내의 데이터 속성이 다를수 있습니다. 또한 쿼리문도 독특하지요. 쿼리문을 보면 오히려 DB 문법이 아닌 javascript 인거 같은 느낌마져 듭니다. 하지만 rdb에서의 백업/리커버리, archive 백업 , 파티션테이블등을 신경쓰지 않기 때문에 개인적으로 배우기엔 더욱 쉬운거 같습니다.
서론이 길었네요! 이전 장은 mongodb 의 저장, 업데이트 , 삭제 , 테이블 삭제등을 알아보겠습니다.
1. 먼저 몽고디비로 접속합니다. 커맨드 창에 mongo 를 입력하면 몽고비디로 접속됩니다.
mongo
2. 먼저 insert 쿼리문 입니다.
db.users.insert( {user_id: "abc123", age: 55, status: "A"} )
여기서 db.users.insert()의 가운데 users 는 데이블이 됩니다. 그리고 테이블이 저절로 생성되면서 데이터가 들어갑니다! (rdb에서는 상상도 못할 일입니다!!) 구문안의 {}에 필드:값 형식이 맞다면 원하는 만큼의 필드/값 을 넣을수 있습니다.
테이블의 갯수를 져오는 함수는 count()입니다. 현재 테이블엔 하나의 값이 들어있기 때문에 결과는 1이 나옵니다.
db.users.count()
앞으로 실습을 위해서 추가로 데이터를 넣습니다.
db.users.insert({user_id:"uiandwe", age:"??", status:'S'}) db.users.insert({user_id:"test", age:"20", status:'C'}) db.users.insert({user_id:"test1", age:"21", status:'C'}) db.users.insert({user_id:"test2", age:"21", status:'C'}) db.users.insert({user_id:"test3", age:"30", status:'D'}) db.users.insert({user_id:"test4", age:"10", status:'B'}) db.users.insert({user_id:"test5", age:"44", status:'D'}) db.users.insert({user_id:"test6", age:"50", status:'D'})
3. 조회 쿼리문(find)
-먼저 조회를 하기전! 현재 디비에서의 생성된 테이블을 확인하고 싶다면 show tables 를 입력하면 됩니다.
캡쳐화면에서는 2번에서 생성한테이블 users 와 system 테이블이 있습을 알수 있습니다.
show tables
3-1 조회 쿼리문은 테이블을 명시한다음 find()을 넣어주면 됩니다. 해당 테이블의 모든 테이터가 출력 됩니다.
db.users.find()
3-2 만일 특정 조건의 테이터만을 원한다면 find()내에 명시해주면 됩니다. 예제는 user_id 가 abc123 인 테이터만 출력하는 예제 입니다.
db.users.find( {user_id:"abc123"} )
3-3 또한 구간을 지정해서 조회를 원한다면 $gt 와 $lt , $gte 와 $lte 가 있습니다. $gt는 초과, $lt 는 미만 , $gte는 이상, $lte 는 이하를 뜻합니다. 아래의 예제는 age필드의 값이 20 초과($gt)인 값을 조회하되 user_id , age 필드 데이터만을 출력하는 예제 입니다.
db.users.find( {age:{$gt:20}}, {user_id:1, age:1, _id:0} )
3-4 아래의 예제는 age 가 20 이하($lte)인 데이터를 출력하는 예제 입니다.
db.users.find({age:{$lte:20}},{user_id:1, age:1, _id:0} )
3-5 조회문의 마지막으로 sort 입니다. 해당 필드의 값을 오름차순일 경우엔 않써도 자동 으로 오름차순이 됩니다. 내림차순일경우 해당 필드:-1 을 넣어주면 됩니다
db.users.find({age:{$gt:20}},{user_id:1, age:1, _id:0}).sort({age:-1})
4. 업데이트문은 4가지의 인자값이 필합니다.
1번인자 : 조건
2번인자 : 변경값
3번인자 : 조건에 해당하는 값이 없고 이 값이 true 면 해당값으로 insert , 이 값이 false 면 무시(기본값 false)
4번인자 : 해당테이블 전체에 적용 true/false (기본값 false)
어려워 보일수도 있으나 1번인자와 2번 인자만 잘 조정해 주면 원하는 값을 변경할수 있습니다.
4-1 먼저 user_id 가 abc123 일 경우 age를 10으로 변경하는 예제 입니다. (기존 데이터는 55였습니다.)
db.users.update( {user_id:"abc123"}, {$set:{age:10}} )
4-2 3번째 인자를 이용하여 age 가 5일경우 user_id를 AAA 로 바꾼다. 만일 없다면 해당 값을 insert 하는 예제 입니다. 이번 예제엔 3번째 인에 true를 넣어줬음을 아셔야 합니다.
db.users.update( {age:5}, {$set:{user_id:"AAA"}}, true )
5. 데이터 삭제! 간단합니다. remove() 에 조건을 넣어주시면 됩니다.
5-1user_id가 abc123 일 경우 해당 데이터를 삭제 합니다.
db.user.remove( {user_id:"abc123"} )
5-2 만일 age 필드의 값이 20 초과 라면 삭제 합니다.
db.users.remove( {age:{$gt:20}} )
5-3 테이블 데이터 전체 삭제.
db.users.remove()
5-4 테이블 자체를 삭제.
db.users.drop()
'Node.js > 8. mongodb' 카테고리의 다른 글
8-4 mongojs 모듈을 이용한 node.js 예제 (0) | 2014.03.27 |
---|---|
8-2 windows 에 mongodb 설치 (3) | 2014.03.21 |
8-1 ubuntu에 mongodb 설치 (0) | 2014.03.20 |