'mongoDB'에 해당되는 글 1건

  1. 2012/02/26 글뻥 Mongo DB 공부 - 1 (2)

Mongo DB 공부 - 1

Admin 2012/02/26 23:42
Mongo DB에 빠져서 요즘 못혜어나오고 있다.
NoSQL(Not Only SQL)의 대표주자인 Mongo DB를 공부하던 도중에 학습결과물을 요약정리하고자 한다.
(추가로, 제발 가져갈때는 출처 남겨 주시라. 몇몇 기술 문서를 가져가면서 자기가 써놓은거 마냥 써놓는 인간들땜시 짜증난다.)

1. 설치
가. http://www.mongodb.org/downloads 에서 자신의 OS에 맞는 패키지 다운로드하자. 나는 MAC을 쓰니까, OSX 64bit버전으로 받았다.
나. 다운로드 파일을 압축해제하면 사용준비 끝.
다. 필요한 DB파일은 콘솔명령 (윈도우도 마찬가지...)으로 해결하자.
$ sudo mkdir -p /data/db/
$ sudo chown `id -u` /data/db



2. 실행
이것도 역시 간단하다.
$ cd [압축해제경로]/bin/
$ mongod


3. 쉘접근하기
다른 콘솔창을 하나 더 열자.

$ cd [압축해제경로]/bin/
$ mongo

test로 접근 가능하다.


4. 명령어 요약에 앞서
명령에 들어가기 앞서 가장 중요한것은 mongoDB자체가 하나의 완벽한 "Javascript" 파서라는 점이다.
두번째는 DB 는 여러개의 컬렉션을 모아 놓는 용도일뿐 RDBMS의 DB와 개념이 다르다.
javascript의 명령은 다 먹는다. 다음을 테스트 해보고 넘어가자.
> x = 1;
1
> x * 2;
2


또다른 예이다.
> Math.sin (Math.PI/2);


순수한 사용자 정의 function 예제이다.
> function x(xyz){
... return xyz;
... }
> x(3);
3



그리고 마지막으로 mongoDB는 JSON으로 관리된다.
http://www.json.org/json-ko.html (JSON형식을 모르면 보고오자)


5. 명령어 요약
> use [DB]  //DB를 변경한다.


> db //지금 사용하고 있는 DB를 출력한다.

> db.[컬렉션명].insert([변수명]); //데이터를 입력한다.
> human = {"id":1, "name":"vicviper"};
{ "id" : 1, "name" : "vicviper" }

> db.blog.insert(human); 
> human = {"id":2, "name":"Shinhyun Min", "age":39};
{ "id" : 2, "name" : "Shinhyun Min", "age" : 39 }
> db.blog.insert(human);



> db.[컬렉션명].find(); //데이터를 검색한다. 모든 결과가 출력된다.
> db.blog.find();
{ "_id" : ObjectId("4f4a41bb0a4aecbf3787e8f1"), "id" : 1, "name" : "vicviper" }
{ "_id" : ObjectId("4f4a41dc0a4aecbf3787e8f2"), "id" : 2, "name" : "Shinhyun Min", "age" : 39 }


다음은 쿼리를 주고 찾은 결과이다.
> db.blog.find({"id":1});
{ "_id" : ObjectId("4f4a41bb0a4aecbf3787e8f1"), "id" : 1, "name" : "vicviper" }



> db.[컬렉션명].findOne(); //데이터를 검색한다. 결과는 하나이다.
> db.blog.findOne();
{
	"_id" : ObjectId("4f4a41bb0a4aecbf3787e8f1"),
	"id" : 1,
	"name" : "vicviper"
}


다음은 쿼리를 주고 찾은 결과이다.
> db.blog.findOne({"name":"vicviper"});
{
	"_id" : ObjectId("4f4a41bb0a4aecbf3787e8f1"),
	"id" : 1,
	"name" : "vicviper"
}
> db.blog.findOne({"name":"vicviper"} || {"age":39});
{
	"_id" : ObjectId("4f4a41bb0a4aecbf3787e8f1"),
	"id" : 1,
	"name" : "vicviper"
}
> db.blog.findOne({"name":"vicviper"} && {"age":39});
{
	"_id" : ObjectId("4f4a41dc0a4aecbf3787e8f2"),
	"id" : 2,
	"name" : "Shinhyun Min",
	"age" : 39
}


>db.[컬렉션명].update(); //업데이트한다.
> db.blog.update({"id":1}, {"id":0.5, "name":"vic"});
> db.blog.find();
{ "_id" : ObjectId("4f4a41bb0a4aecbf3787e8f1"), "id" : 0.5, "name" : "vic" }
{ "_id" : ObjectId("4f4a41dc0a4aecbf3787e8f2"), "id" : 2, "name" : "Shinhyun Min", "age" : 39 }


> db.[컬렉션명].remove(); //삭제한다.

> db.blog.remove({"age":29});
> db.blog.find();
{ "_id" : ObjectId("4f4a41dc0a4aecbf3787e8f2"), "id" : 2, "name" : "Shinhyun Min", "age" : 39 }


2012/02/26 23:42 2012/02/26 23:42
TAG