
db.emp.insert({id:"jang",name:"장동건"})
db.customer.insertOne({id:"jang",pass:"1234",name:"장동건",info:{city:["서울","인천","강릉"],
toeicjumsu:[700,800,650,850,855]}})
db.customer.insertMany([
{id:"lee",pass:"1234",name:"이민호",info:{city:["천안","부산","제천"],toeicjumsu:[555,780,650,900,855]}},
{id:"bts1",pass:"1234",name:"슈가",info:{city:["천안","부산","제천"],toeicjumsu:[555,780,650,900,855]}},
{id:"bts2",pass:"1234",name:"석진",info:{city:["천안","부산","제천"],toeicjumsu:[450,500,558,850,950]}},
{id:"bts3",pass:"1234",name:"뷔",info:{city:["천안","부산","제천"],toeicjumsu:[555,780,650,900,855]}}
])
db.collection명.find(조건,조회할필드에 대한 정보)
---- -------------------------
query projection
db.score.find({addr:"인천"},{id:1,name:1,dept:1,addr:true})
db.컬렉션명.find({조회할필드:{연산자: 값}})
ex) score컬렉션에서 java가 90점 이상인 document를 조회
db.score.find({java:{$gte:90}},{})
--------
>=90
and조건
ex) 부서가 인사이면서 자바점수가 80점이상인 사원
db.score.find({dept:"인사",java:{$gte:80}})
ex)오류상황
db.score.find({$and:{dept:"인사",java:{$gte:80}}})
오류해결
db.score.find({$and:[{dept:"인사"},{java:{$gte:80}}]})
db.score.find({$or:[{id:"hong"},{id:"kang"},{id:"jang"}]})
$in이용
db.score.find({필드:{연산자:값}})
db.score.find({id:{$in:["hong","kang","jang"]}})
db.컬렉션명.find({필드:null})
db.컬렉션명.find({필드:{$ne:null}})
db.컬렉션명.find({필드:{$exists:true}})
db.컬렉션명.find({필드:{$exists:false}})
[패턴문자]
^ - 문자열의 시작
$ - 문자열의 종료
| - or의 의미
[] - 문자의 집합
[a-zA-Z0-9] : 영문의 소문자, 대문자, 숫자 모두 포함 유무
[옵션]
i -> 대소문자 구분없이 조회
db.컬렉션명.find({필드:/정규표현식/옵션})
db.컬렉션명.find({필드:{$regex:"패턴", $options:"옵션"}})
[구문]
db.컬렉션명.update(filter, update, options)
filter - 조건
update - 변경할 필드와 값을 명시
options - update를 위해서 설정할 값
multi옵션 : multi옵션을 true로 지정해야 조건에 만족하는 모든 데이터가 변경된다.
db.컬렉션명.update({조건},{$push:{"객체명.객체에 정의한 속성명":{$each:[값1, 값2, 값3,...]}}}})
db.score.find({})
db.score.insertOne({id:"jang",pass:"1234"})
//널체크 - 필드가 존재하지 않거나 필드가 null인 도큐먼트 반환
db.score.find({java:null})
db.score.find({favorites:null})
//연산자 이용해서 비교하기 - $ne(not equal)
//필드가 존재하고 null이 아닌 값을 갖는 도큐먼트를 조회
db.score.find({favorites:{$ne:null}})
db.score.find({java:{$ne:null}})
//필드의 존재유무를 검사 - java필드가 있는 도큐먼트만 조회
db.score.find({java:{$exists:true}})
db.score.find({java:{$exists:false}})
//정규표현식 - id가 kim이나 park (소문자)인 도큐먼트 조회
db.score.find({id:/kim|park/})
//i 옵션으로 대소문자 구분없이 모두 조회
db.score.find({id:/kim|park/i})
//id가 k로 시작하는 도큐먼트 조회
db.score.find({id:/^k/})
//id가 m으로 끝나는 도큐먼트 조회
db.score.find({id:/g$/})
//id에 특정 글자가 있는 도큐먼트 조회 - 지정한 문자들 사이의 모든 문자
db.score.find({id:/[d-f]/})//d,e,f가 포함
db.score.find({id:/^[d-f]/})//d,e,f로 시작하는
//id에 특정글자가 있는 도큐먼트 조회 - 지정한 문자만 포함
db.score.find({id:/[jlm]/})//j,m,l
db.score.find({id:/[lm]/})
db.score.findOne()//첫번째 조회
db.score.find({}).skip(2).limit(5)//위에서 두개 스킵 후 이후 5개 조회
db.score.find({servlet:{$not:{$exists:null}}})
db.getCollection("exam").find({})
//1. exam에서 이름에 김씨인 사람 조회해보기
db.exam.find({name:/^김/})
//2. exam에서 servlet점수가 가장 낮은 document와 가장 높은 document 출력하기
db.exam.find({servlet:{$not:{$exists:null}}}).sort({servlet:1}).limit(1)
db.exam.find({servlet:{$not:{$exists:null}}}).sort({servlet:-1}).limit(1)
//3. java점수가 가장 높은 document중에 7개를 출력하되 2개를 건너뛰고 출력해보자
db.exam.find({}).sort({java:-1}).skip(2).limit(7)
//4. 아이디에 n과 o가 들어가는 document 구하기
db.exam.find({id:/[no]/})
db.getCollection("score").find({})
for(let i=1100;i<=1120;i++){
db.emp.insert({id:i,msg:"test"+i})
}
db.emp.insertOne({id:"bts", name:"방탄소년단", pass:"1234"})
db.emp.insertOne({id:"bts11", name:"방탄소년단", pass:"1234"})
db.emp.update({id:"bts"},{$set:{pass:"123456"}},{multi:true})
db.emp.insertOne({id:"lee", name:"bts",val:1000})
db.emp.updateMany({id:"lee"},{$inc:{val:100}})
db.emp.find({})
db.exam.find({})
//1. id가 kang인 사람의 dept를 "총무"로 변경
db.exam.update({id:"kang"},{$set:{dept:"총무"}})
//2. dept가 "전산"인 모든 사람들의 addr을 "안양"으로 변경
db.exam.update({detp:"전산"},{$set:{addr:"안양"}},{multi:true})
//3. id가 jang인 document의 bonus를 1000추가하기
db.exam.update({id:"jang"}, {$inc:{bonus:1000}})
//4. dept가 총무인 모든 document에 bonus를 2000추가하기
db.exam.updateMany({dept:"총무"}, {$inc:{bonus:2000}})
//5. addr이 서울인 사용자들의 mgr을 jang으로 변경
db.exam.updateMany({addr:"서울"}, {$set:{mgr:"jang"}})
db.getCollection("customer").find({})
//배열데이터 수정 연산자
//배열데이터를 추가
db.score.update({id:"jang"},{$set:{
favorite:{
city:["서울","안산"],
movie:["변호인","겨울왕국2","파묘"]
}
}
})
db.score.updateMany({id:"jang"},{$push:{"favorite.city":"천안"}})
db.score.updateMany({id:"jang"},{$addToSet:{"favorite.city":"가평"}})
db.score.updateMany({id:"jang"},{$pop:{"favorite.city":1}})
db.score.updateMany({id:"jang"},{$pop:{"favorite.city":-1}})
//원하는 요소 제거하기
db.score.updateMany({id:"jang"},{$pull:{"favorite.city":"광주"}})
db.score.updateMany({id:"jang"},{$pull:{"favorite.city":"부산"}})
db.score.updateMany({id:"jang"},{$push:{"favorite.city":"양양"}})
db.score.updateMany({id:"jang"},{$push:{"favorite.city":"과천"}})
db.score.updateMany({id:"jang"},{$push:{"favorite.city":"양산"}})
//pullAll을 이용해서 여러 개의 요소를 제거
db.score.updateMany({id:"jang"},{$pullAll:{"favorite.city":["양양","양산"]}})
//여러개의 요소를 배열에 추가하기 - **틀린경우**
db.score.updateMany({id:"jang"},{$push:{"favorite.city":["고성","수원","부천"]}})
//위의 잘못추가된 배열을 삭제
db.score.updateMany({id:"jang"},{$pullAll:{"favorite.city":[["고성","수원","부천"]]}})
//db.score.update({id:"jang"},{$pull:{"favorite.city":["고성","수원","부천"]}})
db.score.updateMany({id:"jang"},{$push:{"favorite.city":{$each:["고성","수원","부천"]}}})
db.score.find({})
db.customer.find({})
db.exam.find({})
//1. song,jang,hong에 다음과 같은 값을 가질 수 있도록 배열로 필드를 추가하세요
//song : history (영업1팀, 총무, 기획실)
//jang: history(전략팀,총무,전산)
//hong : history(영업1팀, 기획실,전산)
db.exam.updateMany({id:"song"},{$set:{"history":["영업1팀","총무","기획실"]}})
db.exam.updateMany({id:"jang"},{$set:{"history":["전략팀","총무","전산"]}})
db.exam.updateMany({id:"hong"},{$set:{"history":["영업1팀","기획실","전산"]}})
//2. song의 document history에 자금부를 추가하세요
db.exam.updateMany({id:"song"},{$push:{"history":"자금부"}})
//3. jang의 document의 history에 마지막 데이터를 제거하세요
db.exam.updateMany({id:"jang"},{$pop:{"history":1}})
//4. servlet데이터가 100점인 모든 document에 bonus를 3000을 추가하세요. 기존데이터가 존재하면 증가되도록 구현하세요
db.exam.updateMany({servlet:100},{$inc:{bonus:3000}})
//5. song의 lang.ms에 "visual basic","asp",".net"을 한꺼번에 추가하세요
db.exam.updateMany({id:"song"},{$push:{"lang.ms":{$each:["visual basic","asp",".net"]}}})
본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.