참고: 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 |