'Node.js/8. mongodb'에 해당하는 글 4건

8-3장에서 mongodb 의 기초 쿼리를 다뤄봤습니다. 이번에는 node.js 에서 mongojs 모듈을 이용하여 mongodb 의 데이터를 컨트롤 하는 예제 입니다. 


mongojs_test.tar.gz


아래의 예제들은 묶어서 파일로 올려드립니다. (mongojs 가 설치 되있지 않으면 실행이 안됩니다.)



1. 먼저 mongojs 모듈을 설치 해야합니다.  당연히 npm 으로 설치해야 겠지요?

sudo npm -g nomgojs


제가 설치한 버전은 0.10.1 버전이군요.



2. 첫번째 예제는 insert  입니다.  소스를 보시면 첫번째 줄의 모듈을 불러오는 부분의 connect 의 파라미터를 보시면 member 라는 컬렉션의 info 라는 테이블을 사용해라! 라는 의미가 됩니다. 해당 부분의 데이터를 바꿔서 원하는 컬렉션과 테이블을 설정하시면 됩니다. 

insert 라는 함수를 만들었으며 파라미터로 들어오는 값을 info 테이블에 insert 하는 함수 입니다. 예제의 경우 {user_id: "uiandwe", age: 22,status: "S" } 의 데이터를 isnert 하게 됩니다. 

아래의 코드를 파일을 만들어서 실행시키시면 됩니다.  


var db = require('mongojs').connect('member', ['info']); 

insert = function(data){
	db.info.save(
	data,function(error,result){
		if(!error)
			console.log("insert succeed!");
		db.close();
	});
}
var insert_data = {user_id: "uiandwe", age: 22,status: "S"};
insert(insert_data);


mongodb 에 들어가서 dbs 를 보시면 member 가 생성된것을 확인할수 있습니다. 또한 info 라는 테이블도 생성되어 정상적으로 값이 들어간것을 확인할수 있습니다. 




3. 두번째는 find 즉 select 입니다. 1번에 넣은 데이터를 확인하는 find 함수를 만들었습니다. 파라미터로 들어온 값을 찾는 예제 입니다. 해당 소스를 실행해보면 콘솔창에 찾은 데이터 값이 출력됩니다. 

var db = require('mongojs').connect('member', ['info']); 

find = function(data){
	db.info.find(
	data,function(error,result){
		if(!error)
			console.log(result);
		db.close();
	});
}
find({user_id:"uiandwe"});




4. 이번엔 update 문입니다. 해당 예제는 user_id 가  uiandwe 인 데이터를 찾아서 age 를 100으로 변경하는 예제 입니다. 

var db = require('mongojs').connect('member', ['info']); 

update = function(serach_data,set_data ){
	db.info.update(
	serach_data, set_data,function(error,result){
		if(!error)
			console.log("update succeed!");
		console.log(result);
		db.close();
	});
}
update({user_id:"uiandwe"}, {$set:{age:100}});



5. 삭제 예제입니다. 해당 예제는 user_id 가 uiandwe 인 데이터를 삭제 하는 예제 입니다. 

var db = require('mongojs').connect('member', ['info']); 


remove = function(data ){
	db.info.remove(
	data,function(error,result){
		if(!error)
			console.log("remove succeed!");
		console.log(result);
		db.close();
	});
}
remove({user_id:"uiandwe"});



6. 보너스로  해당 테이블의 테이터의 갯수를 가져오는 예제 입니다. 

var db = require('mongojs').connect('member', ['info']); 

count = function(data){
	db.info.count(
	data,function(error,result){
		if(!error)
			console.log("count succeed!");
		console.log(result);
		db.close();
	});
}
count();




참쉽죠?



저작자 표시
신고

'Node.js > 8. mongodb' 카테고리의 다른 글

8-4 mongojs 모듈을 이용한 node.js 예제  (0) 2014.03.27
8-3 mongodb 기초 쿼리  (0) 2014.03.22
8-2 windows 에 mongodb 설치  (2) 2014.03.21
8-1 ubuntu에 mongodb 설치  (0) 2014.03.20

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

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-3 mongodb 기초 쿼리  (0) 2014.03.22
8-2 windows 에 mongodb 설치  (2) 2014.03.21
8-1 ubuntu에 mongodb 설치  (0) 2014.03.20

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret


이번 장은 windows 에 mongodb 를 설치하는 과정입니다.


1. 먼저 설치 파일을 받아야 합니다. http://mongodb.org 에 접속한후 Downloads 에 windows 버전을 클릭하여 다운 받습니다.  


2. 압축파일을 c:\ 에 풀어줍니다. 전 c:\mongodb 폴더에 압축을 풀었습니다. 

   새로운 폴더로 data 를 생성해 줍니다. 금방 만든 data에 들어가서 db 라는 새로운 폴더를 생성해 줍니다. 

   완성된 구조는 c:\mongodb\bin\실행파일들

                                 \data\db 

    이런 구조가 되어야 합니다. 

3. 커맨드창으르 하나 실행 시킵니다. (ctrl+r ->cmd)

    커맨드창에서 폴더를 푼 폴더로 이동합니다. (cd c:\mongodb\bin)

    다음의 명령어를 실행합니다.

    >mongod.exe --depath c:\mongodb\data\db

    만일 압축을 푼 폴더의 이름이 다르다면 경로를 알맞게 변경하여 실행시키시면 됩니다. 해당 명령어가 실행되면 mongodb의 컬렉션들이 생성됩니다. 


4. 다시 새로운 커맨드 창을 실행 시킨후 c:\mongodb\bin 로 이동합니다. 

    이제 mongo.exe 를 실행시키면 mongodb 가 실행됩니다.  


5. 또한 웹브라우져창에서 http://127.0.0.1:28017 로 들어가보면 해당 mongodb 의 관리화면에 접속가능합니다.  


저작자 표시
신고

'Node.js > 8. mongodb' 카테고리의 다른 글

8-4 mongojs 모듈을 이용한 node.js 예제  (0) 2014.03.27
8-3 mongodb 기초 쿼리  (0) 2014.03.22
8-2 windows 에 mongodb 설치  (2) 2014.03.21
8-1 ubuntu에 mongodb 설치  (0) 2014.03.20

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. Windows에서의 설치는 Linux에서보다 신경쓸부분이 있군요.

    잘 읽었습니다.
  2. 비밀댓글입니다
secret

웹싸이트를 제작하기 전! DB 가 필요합니다. 저의 경우 ubuntu 에서 개발하기 때문에 일단 os  는 ubuntu! 

거기다가 node.js 와 정말 잘 맞는 DB 는 mongodb!! 

몽고DB(MongoDB←HUMONGOUS)는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. NoSQL 데이터베이스로 분류되는 몽고DB는 JSON과 같은 동적 스키마형 문서들(몽고DB는 이러한 포맷을 BSON이라 부름)을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 삼간다. 이로써 특정한 종류의 애플리케이션을 더 쉽고 더 빠르게 데이터 통합을 가능케 한다. 아페로 GPL과 아파치 라이선스를 결합하여 공개된 몽고DB는 자유-오픈 소스 소프트웨어이다.


출처 : http://ko.wikipedia.org/wiki/몽고DB

네! 공짜 입니다! 그리고 무지하게 빠릅니다. 또한 json 의 스키마문서를 지원하기 때문에 node.js 와 더욱 잘 맞습니다.! (물론 공짜에다가 빠른 mysql의 후속작인 마리아DB 도 있습니다. 마리아DB 는 mongodb의 연재가 끝난 다음 포스팅 하겠습니다.)


1. mongodb 설치! 커맨드 창에 sudo apt-get install mongodb 

sudo apt-get install mongodb 


2. 117MB 를 사용할꺼에요~ 계속 할래요?! 당연히 Y


3. 모두 설치가 완료 되었다면 버전을 확인해 볼까요? $mongo --version 저의 버전은 2.0.4 입니다. 

mongo --version


4. mongodb 에 접속하고 싶다면 커맨드 창에 mongo 를 실행하면 됩니다. 

mongo 


5. 웹브라우저에서 http://localhost:28017 에 접속하면 기본관리화면을 볼수 있습니다. 



저작자 표시
신고

'Node.js > 8. mongodb' 카테고리의 다른 글

8-4 mongojs 모듈을 이용한 node.js 예제  (0) 2014.03.27
8-3 mongodb 기초 쿼리  (0) 2014.03.22
8-2 windows 에 mongodb 설치  (2) 2014.03.21
8-1 ubuntu에 mongodb 설치  (0) 2014.03.20

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret