Software Workshop

MongoDB는 MySQL의 DB와 테이블, 레코드에 대응되는 DB와 컬렉션, 문서 개념을 가지고 있음

모든 DB 목록 조회


show dbs 

DB 선택


use  
//use admin

DB 생성

DB 생성은 따로 없음. 임의의 DB이름을 골라서 사용하면 됨


use mydb

데이터가 생성되기 전까지는 show dbs 명령을 실행해도 목록에 조회되지 않음

현재 DB에 속한 컬렉션 목록을 조회


show collections

특정 컬렉션(테이블)에 레코드 생성

컬렉션의 이름은 testCollection으로 사용


db.testCollection.insert({a: 1})
db.testCollection.insert({a: 3})

컬렉션의 문서 조회


db.testCollection.find()

커서를 이용한 조회

여기서부터는 자바스크립의 문법과 동일한 것을 확인할 수 있음


var c = db.testCollection.find()
c.next()
c.next()

변수를 이용한 문서 추가


j = { name : "mongo" } 
k = { x : 3 } 
db.testData.insert(j) 
db.testData.insert(k)

커서를 이용한 반복 조회


var c = db.testData.find() 
while (c.hasNext()) printjson(c.next()) 

커서와 문서 번호를 이용한 조회


printjson(c[1]) 

조건을 이용한 조회


db.testData.find({x: 3}) 

단건 조회


db.testData.findOne()

조회 갯수 제한


db.testData.insert({foo: 3})
db.testData.insert({foo: 4})
db.testData.insert({foo: 10})
db.testData.insert({foo: 9})
db.testData.insert({foo: 7})
db.testData.insert({foo: 4})
db.testData.insert({foo: 2})
db.testData.find().limit(5)

for loop를 이용한 반복 추가


for (var i = 1; i <= 25; i++) db.testData.insert({num: i})

콘솔 상의 페이징

콘솔에서는 문서를 한 번에 20개까지만 출력하고 중간에 멈추므로 it 명령을 입력하여 추가로 문서를 조회해야 함


for (var i = 1;i <= 25; i++) db.testData.insert({num: i}) 
db.testData.find() 
it 

자바스크립트 함수를 이용하여 쿼리 로직을 작성


function insertData(dbName, colName, num) { 
     var col = db.getSiblingDB(dbName).getColleciton(colName); 
     for (i = 0; i < num; i++) {  
          col.insert({x: i}) 
     } 
     print(col.count()); 
} 
insertData("test", "testData", 40)

문서의 속성의 조건을 이용한 조회

db.player.insert({ name: "sue", age: 26, status: "A", groups: [ "news", "sports" ] })
db.player.insert({ name: "john", age: 17, status: "B", groups: [ "news" ] })
db.player.insert({ name: "may", age: 26, status: "A", groups: [ "sports" ] })
db.player.find({age: { $gt: 18 }}).sort({age: 1})