var myCursor = db.book.find().skip(2).limit(2)
myCursor.forEach(print)
var myCursor = db.book.find().skip(2).limit(2)
myCursor.forEach(printjson)
var myCursor = db.book.find({}, {name:true, price : true, _id:false})
printjson(myCursor[0])
var myArray = myCursor.toArray()
myArray
myCursor는 한번만 쓸 수 있기때문에 toArray하면 myCursor 내용없어짐
toArry( ) : 각각의 데이터 스캔함
정규표현식
db.book.copyTo("book2") //book컬렉션 book2로 복사
db.book.find({"name":/^java/}) // java로 시작하는
db.book.find({"name":/java/}) // java포함 = %java%
db.book.find({"name":/java$/}) // java로 끝나는것 = %java
db.book.find({"name":/j|a|v/}) // j or a or v를 포함하는
db.book.find({"name":/[jav]/}) // j or a or v를 포함하는
db.book.find({"name":/[a-k]/}) // a,b,c,d,e,f,g,h,i,j,k 중에 하나를 포함하는
db.inventory.find({item:{$not : /^p.*/}}); // p로 시작하고 임의의 문자가 뒤에 0개 이상오는게 아닌것
db.inventory.find({item : {$not:{$regex:"^p.*"}}})
db.inventory.find({item : {$not:{$regex:/^p.*/}}})
//관계형 DB
updete memeber set status = 'C' where age > 25
삭제
// mongoDB
db.member.remove({no : "C001"})
필드명이 C001인 것을 삭제해라
//관계형 DB
delect from member where no = 'C001'
조건에 해당하는 JSON 객체 안 주면 ALL이 된다.
스키마
mongoDB
관계형 DB
스키마 생성
- 어떤 컬럼 정의하는지 미리 정함 - 데이터구조 미리 정함
데이터입력
- 비정형 Data - 집어 넣고 싶은 도큐먼트 사양 그때 그때 마음대로 유연하다.
- 정형 Data - 컬럼 사양 맞춰줘야함
스키마조회
스키마 없음
스키마(테이블 구조)정해져 있음
장점
스키마 선업없이 도큐먼트에 필드 추가 및 삭제 자유로움
컬럼 사양에 맞춰야함
단점
전체 도큐먼트 조사해야함
스키마 선언 후 , 정형화 구조에 맞춰야만 데이터 입력가능
실습
use 데이터 베이스 이름
- 없으면 새로 만들어줌
db
- 현재 사용하고 있는 db 뭐냐
show dbs
- 도큐먼트 한개도 없으면 온전한 db가 될 수가 없다.
db.book.insert({"name":"python","price":10000})
book 컬렉션 먼저 만들어주고
그 안에 도큐먼트 넣어줌
show collections
현재 안에 있는 컬렉션들을 보여달라
db.book.find()
// 가격이 낮은 순
db.book.find().sort({"price":1})
// 가격이 높은 순
db.book.find().sort({"price":-1})
// 가격이 높은 순 - 여러개 설정
db.book.find().sort({"price":-1,"name":1})
// 이름이 자바스크립트인 서적만 꺼내라
db.book.find({"name":"javascript"})
// 자바로 시작하는 친구
db.book.find({"name" : {"$regex":"^java"}})
//가격이 8000넘는 친구
db.book.find({"price" : {"$gt":8000}})
//가격이 8000보다 작거나 같은
db.book.find({"price" : {"$lte":8000}})
데이터 일치
연산자 : regex
^ : 시작하는 문자
^java : 자바로 시작하는
$ : 끝나는 문자
. : 개행식을 제외한 모든 문자
연산
lt : 미만
lte : 이하
gt : 초과
gte : 이상
//메서드 전부 다 나옴
db.book.help()
// 첫번째 아규먼트 아무것도 없는 것 -> 안 주면 안됨
// name필드는 꺼내, price는 빠짐 (name만 꺼내고, id는 언급 안 하면 무조건 나옴)
db.book.find({},{'name':1})
// id는 안 뽑고 싶다 (따로 언급 안 한건 모두 0이 됨)
db.book.find({},{'name':1,'_id':0})
// 꺼내고 싶은 것 true로
db.book.find({},{'name':true})