티스토리 뷰
몽고디비 데이터의 기본 단위는 문서인데. 관계형 데이터베이스의 행과 유사하다.
같은 맥락에서 콜렉션은 스키마가 없는 테이블로 생각할 수 있다.
모든 문서는 문서 콜렉션 내에서 고유한 특수키인 "_id" 를 가지고 있다.
몽고디비는 인스턴스 관리와 데이터 조작에 유용한, 단순하지만 강력한 자바스크립트 셸을 지원한다.
몽고 셸은 자바스크립트 해석기로 임의의 자바스크립트 프로그래밍 실행할수 있다
> Math.sin( Math.PI / 2 );
1
> new Date("2014/11/01")
ISODate("2013-12-31T15:00:00Z")
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 |
angularJS 를 활용한 indexedDB 데이터처리하기 (0) | 2015.09.08 |
IndexedDB 활용! (0) | 2015.09.07 |
mysql Query log 남기기 (0) | 2015.06.21 |