참고: http://www.mongodb.org/display/DOCS/dbshell+Reference



특수 커맨드 (자바스크립트와 관계없는)


show dbs 서버의 모든 database 리스트 출력
use dbname db 변수의 값을 서버의 dbname 데이터베이스로 변경
show collections 현재 데이터베이스의 모든 collections 리스트 출력
show users 현재 데이터베이스의 모든 사용자 리스트 출력
show profile 1ms 이상 소요된 가장 최근의 프로파일링 작업 출력






기본 shell 자바스크립트 명령


db 현재 접속되어 있는 데이터베이스 오브젝트를 가리키는 변수
db.auth(user,pass) secure mode로 돌아가고 있을 경우 db에 접속(인증)
coll = db.collection 데이터베이스의 특정 collection에 접속
cursor = coll.find(); collection 내의 모든 오브젝트 find. 참고 -> 쿼리
coll.remove(objpattern); collection에서 objpattern에 매칭되는 object 삭제.
objpattern은 object를 매칭시킬 수 있는 특정필드
ex) coll.remove( { name : "Joe" } );
coll = db.collection 데이터베이스의 특정 collection에 접속
coll.save(object); collection에 object를 저장 (이미 있는 object라면 갱신[update])
만약 object가 presave method를 가지고 있다면 db에 저장되기 전에 해당 method가 호출됨(update,insert 모두)
coll.insert(object); collection에 object 삽입. 해당 object가 collection에 이미 있는지 여부는 체크되지 않음.
coll.update(...) collection의 object update.
참고 -> Updating
update()는 옵션이 매우 많음
coll.ensureIndex( { name : 1 } ) tab.name의 인덱스 생성.
인덱스가 이미 있으면 아무것도 안함.
db.getSisterDB(name) 현재 connection을 이용하여 name 데이터베이스로 스위칭.
간단하게 "use name" 할 수도 있지만 일반 자바스크립트 표현으로 동작한다는 것이 다른 점.





쿼리



coll.find() 전부 find
it find()로 반환된 cursor의 마지막 위치부터 계속 반복(iterating)
coll.find( criteria ); criteria에 매칭되는 object find
ex) coll.find( { name : "Joe" } );
coll.findOne( criteria ); object 하나만 반환.
find가 실패하면 null 반환.
만약 하나의 object만 반환되길 원한다면, findOne()이 find().limit(1)보다 효과적임.
만약 element의 타입이 문자열, 숫자, 날짜라면 정규식을 사용할 수 있음
ex) coll.find( { name: /joe/i } );
coll.find(criteria, fields); object에서 지정된 fields만 반환
ex) coll.find( {}, {name:true} );
coll.find().sort( {field:1[,field:1] }); 지정된 순서대로 정렬하여 반환. (field ASC)
DESC는 -1
coll.find(criteria).sort( { field : 1 } ) criteria에 매칭되는 object를 field로 정렬하여 반환.
coll.find(...).limit(n) 반환되면 결과값을 n열만큼 제한.
만약 몇개의 특정한 열만 필요하다면 성능향상을 위해 강력히 권장.
coll.find(...).skip(n) 결과값 중 n개 만큼 건너뛴 결과를 반환
coll.count() collection에 있는 object의 전체 갯수를 반환
coll.find(...).count() query에 매칭되는 결과값의 수를 반환.
count()의 반환값은 limit,skip을 무시한다.
예를 들어 매칭된 결과값이 100개이고, limit(10)을 했다해도 count()는 100을 반환한다.
이건 사용자가 직접 반복시키는 것 보다 빠르다.





오류검사



db.getLastError() 마지막 실행의 에러를 반환.
db.getPrevError() 직전 실행의 에러를 반환.
db.resetError() 에러 메모리를 비움.






관리자 명령어




db.cloneDatabase(fromhost) fromhost에 있는 데이터베이스를 현재 데이터베이스에 복사한다.
fromhost는 noauth 모드여야 한다.
db.copyDatabase(fromdb, todb, fromhost) fromhost의 fromdb를 현재 서버의 todb로 복사한다.
fromhost는 noauth 모드여야 한다.
db.repairDatabase() 현재 데이터베이스를 복구하고 압축시킴.
데이터베이스의 크기가 클 경우 굉장히 오래 걸릴 수 있음.
db.addUser(user.pwd) 현재 데이터베이스에 사용자 추가
db.getCollectionNames() collection 전체의 리스트를 가져옴
db.dropDatabase() 현재 데이터베이스를 삭제(drop)







기타 등등




c = connect("<host>:<port>/<dbname>") 새 데이터베이스 연결을 시도.
하나의 shell에서 여러 연결을 가질 수 있지만 shell에서 출력해주는 getLastError 리포트는 'db'변수에 할당되어 있는 것만 가능하다.
connect() 예제 -> Example
Object.bsonsize(db.foo.findOne()) 해당 object의 bson 사이즈 출력 (mongo 1.3 이상)
db.foo.findOne().bsonsize() 해당 object의 bson 사이즈 출력 (mongo 1.3 이전)









함수 전체 리스트 : shell API

'DataBase' 카테고리의 다른 글

[PostgreSQL] enum type  (0) 2010.03.15
[MongoDB] with PHP  (0) 2010.03.12
[MongoDB] 시작, 종료  (0) 2010.03.12
[MongoDB] 설치  (0) 2010.03.12
[MySQL] 타입 캐스팅  (0) 2010.03.02
Posted by bloodguy
,