티스토리 뷰

 몽고디비 데이터의 기본 단위는 문서인데. 관계형 데이터베이스의 행과 유사하다.

같은 맥락에서 콜렉션은 스키마가 없는 테이블로 생각할 수 있다.

모든 문서는 문서 콜렉션 내에서 고유한 특수키인 "_id" 를 가지고 있다.

몽고디비는 인스턴스 관리와 데이터 조작에 유용한, 단순하지만 강력한 자바스크립트 셸을 지원한다.


몽고 셸은 자바스크립트 해석기로 임의의 자바스크립트 프로그래밍 실행할수 있다


> Math.sin( Math.PI / 2 );

1

> new Date("2014/11/01")

ISODate("2013-12-31T15:00:00Z")

>"Hello. World".replace("World", "MongoDb");

ㅇfunction factorial( n) {

    if ( n <= 1 ) return 1;

     return n * factorial( n - 1);

}


factorial( 5 );


db에 할당된 데이터베이스를 확인

> db

open_market ( 디비명)


데이터 베이스 선택

> use foobar


> db.version();


몽고 쿼리


"$lt", "$lte", "$gt", "gte" ,  <, <=, >, >= 에 해당한다.


"$ne" 'not equal" 


> db.users.find( { "username" : {"$ne" : "joe"}})



"$in" 하나에 키에 대해 다양한 값과 비교하는 쿼리

> db.raffle.find( {"ticket_no" : { "$in" : [ 111,222,444]}})


"$nin"  "$in" 의 반대  배열내에 조건과 일치 않는 문서를 반환합니다.

>db.raffle.find ( {"$or" : [ { "ticket_no" : 725}, "{"winner" : true }]}) 


"$or"은 다른 조건절도 포함합니다.

>db.raffle.find ( {"$or" : [ { "ticket_no" : { "$in" : [111,222,333]}}, { "winner" : true}}});


"$mod" 는 키의 값을 첫 번재 값으로 나눈후 그나머지 값의 조건을 두 번째 값으로 기술하는 연사잔 입니다.



between  조건

>db.user.find({"age" : {"$lt" : 30, "$gt" : 20 } );



"$and", "$or", "$nor" 과 같이 외부 문서의 아능로 들어 갈 수 있는 몇몇 '메타 연산자'가 존재 한다. .

> db.user.find( { "$and" : [ {"x": { "$lt" : 1}}, { "x" : 4}]})


정규 표현식

>db.user.find("name" : /joe/i})

>db.user.find({"name" : /joey?/i})



$size 주어진 크기의 배열을 반환하는 "$size" 연산자



내장 문서에 쿼리하기


people = { "name" : { "first" : "Joe", "last": "Schmoe" }, "age" : 45  }

db.people.insert(people);


db.people.find({"age":45});


"$elemMatch" 는 조건의 '그룹화를'를 지원한다. 

"$where" 쿼리 자바스크릅트를 쿼리의 일부분으로 실행할수 잇다. 


많은 수의 건너띠기 피하기

문서수가 적을때는 skip 를 사용해도 무리가 되지 않는다. 


> var page1 = db.foo.find(criteria).limit(100)

> var page2 = db.foo.find(criteria).skip(100).limit(100)

> var page3 = db.foo.find(criteria).skip(200).limit(100)


"date"를 내림차순으로 정렬해서 문서를 표시한다가 가정

var page1 = db.foo.find().sort({"date" : -1}).limit(100)


var lastest = null;


while ( page1.hasNext()) {

     lastest = page1.next();

     display(lastet);

}


인덱스 돌리기


몽고디비에 백만건 데이터 넣기 

for ( i= 0 ; i < 1000000; i++ ) {

    db.user.insert(

         {

             "i" : i,

             "username" : "user"+i,

             "age" : Math.floor(Math.random()*120),

             "created" : new Date()

         }

    );

}



인덱스 넣기 

> db.users.ensureIndex({"username": 1})


몽고디비 쿼리

http://www.slideshare.net/niddo/mongo-d-b


몽고디비 Ranged Query 

https://sammaye.wordpress.com/2012/05/25/mongodb-paging-using-ranged-queries-avoiding-skip/

http://cinema4dr12.tistory.com/entry/Query-skip%EC%97%90-%EB%8C%80%ED%95%9C-%EC%86%8D%EB%8F%84-%EB%86%92%EC%9D%B4%EA%B8%B0


참고




삽입시 insert()와 save()

insert: _id가 동일한 값을 저장하려 한다면 오류 발생

save: _id가 동일해도 저장한다(수정한다) 기존에 저장된 데이터위에 덮어쓴다.


수정시 update()와 save()

update: 특정 필드만 수정할 수 있다.

save: 필드단위로 수정되지 않고 데이터를 덮어쓰므로 이전 데이터는 사라진다.



저작자 표시
신고

'웹개발 > DataBase' 카테고리의 다른 글

mysql 자동증감 수정해주기  (0) 2017.02.02
몽고 디비 모델링  (0) 2016.03.05
몽고 데이터베이스 공부  (0) 2015.12.15
angularJS 를 활용한 indexedDB 데이터처리하기  (0) 2015.09.08
IndexedDB 활용!  (0) 2015.09.07
mysql Query log 남기기  (0) 2015.06.21
댓글
댓글쓰기 폼