보라코딩
Day 8, Mongo DB 본문
Mongo DB 기본 명령어
- use studydb : studydb를 생성
- show dbs
- db.firstcol : firstcol이라는 collection 생성
- db.firstcol.insertOne({a:1}) : 데이터 넣기
- show collections
- db.firstcol.insertOne( {name:"싼쵸", age:4, t_f:true, asstr:[{국적:"한국", 도시:"동탄"}, {직업:"백수", 경력:"4년"}]}) : insertOne 데이터 하나 넣기
디비 컬렉션 수정 삭제 상태 확인
- db.firstcol.renameCollection('collst') : collection 이름 변경
- db.collst.drop() : collection 삭제
- db.dropDatabase() : db 삭제
캡드, 사이즈 설정
- use dbfirst
- db.createCollection("col1",{capped:true,size:500})
- db.col1.stats()
- db.col1.totalSize()
- for(i=0; i<500; i++){ db.col1.insertOne({a:i}) }
- db.col1.find()
다중입력 및 배열 검색 insertMany find elemMatch
데이터 하나 넣기
- db.col2.insertOne({ name:"바봉", age:1, etc:[{hobby:"육상", state:"충청도"}, {likenum:[1,2,3,4,5]}]})
데이터 여러개 넣기
db.col2.insertMany([
{name:"고양이", age:3,
etc:[{hobby:"뛰기", state:"제주도"},
{likenum:[1,2,3,4,5]}]},
{name:"핑크퐁", age:5,
etc:[{hobby:"마술", state:"마법의성"},
{likenum:[10,20,30,40,50]}]},
{name:"뽀로로", age:10,
etc:[{hobby:"여행", state:"경기"},
{likenum:[20,30,40,50,60]}]}
])
- db.col2.find({name:"바봉"}) : 원하는 정보만 조회
- db.col2.find({name:"뽀로로", age:10}) : 여러 정보로 조회
- db.col2.find({age:5}, {_id:1})
- db.col2.find({etc:{$elemMatch:{"likenum.0":20}}})
- db.col2.find({etc:{$elemMatch:{hobby:"육상"}}})
커서 cursor
커서에는 포인터가 있고, 포인터에는 도큐먼트의 위치 정보가 들어 있음
- for(x=0;x<100;x++) db.col3.insertOne({"a":x}) : 반복문으로 100개 데이터 넣기
- db.col3.countDocuments() : 100개 넣었으니 100이라고 나옴
- var cursor = db.col3.find()
- cursor.hasNext() : 반환할 것이 있으면 true, 마지막이면 false
- cursor.toArray() : 다 보여줌
- var cursor = db.col3.find().noCursorTimeout() : 커서 시간 제한 없애기
도큐먼트 교체 수정하기
replace는 아예 덮어 쓰는 것
update는 입력한 정보만 변경하는 것
- db.col2.replaceOne({name:"바봉"}, {name:"바보오오", age:12345})
- 내용 변경하기 (object id는 그대로)
- db.col2.updateOne({name:"타요"}, {$set:{name:"타요", age:"10", hobby:"운전"}}, {upsert:true})
- upsert(update+insert)를 true로 하고 update 하면 있으면 수정하고, 없으면 추가
- $set은 위와 같이 수정하는 것
- $inc : 기존값과 더함
- $rename : 필드명 변경하기
- $max : 변경하는 값이 더 크면 변경되고, 작으면 변경되지 않음
- $min
도큐먼트 교체 수정하기2
- db.col2.insertOne({name:"핑퐁", age:7})
- 데이터 여러 번 넣었다고 가정
- db.col2.updateOne({name:"핑퐁"}, {$set:{age:10}})
- updateOne은 하나만 수정함
- db.col2.updateMany({name:"핑퐁"}, {$set:{age:10}})
- updateMany는 모든 해당하는 데이터 수정
- db.col2.updateOne({name:"바보오오"}, {$push:{"etc":{"likefood":"아이스크림"}}})
- push하면 데이터가 있어도 데이터 추가
- b.col2.updateOne({name:"바보오오"}, {$addToSet:{"etc":{"likefood2":"초콜릿"}}})
- addToSet하면 데이터가 있는 경우 추가되지 않음
- db.col2.updateOne({name:"포로포로퐁"}, {$push:{"etc":{"friends":["타요","핑퐁"]}}})
- db.col2.updateOne({name:"포로포로퐁"}, {$pull:{"etc":{"friends":"타요"}}})
- pull은 제거. 위의 코드로 friends 전체가 지워짐
- db.col2.updateOne({name:"고양이"}, {$pop:{"etc":-1}})
- pop은 제거. etc에 -1을 넣으면 배열에서 0번째 요소를 제거
- 1은 마지막 요소를 제거
- db.col2.updateOne({name:"뽀로로"}, {$push:{"etc.1.likenum":70}})
- 배열에 데이터 하나 넣기
- db.col2.updateOne({name:"핑크퐁"}, {$push:{"etc.1.likenum":{$each:[80,90,100]}}})
- 배열에 데이터 여러개 넣기. each를 꼭 넣어줘야함
참조
'개발자가 되었다?' 카테고리의 다른 글
Day 10, 도커 (0) | 2023.08.29 |
---|---|
Day9, 도커 설치, 명령어 + 참고자료 (0) | 2023.08.28 |
대댓글 DB (0) | 2023.08.25 |
Day 7 (0) | 2023.08.24 |
Day 6, 반도체공정 (0) | 2023.08.23 |