보라코딩

Day 8, Mongo DB 본문

개발자가 되었다?

Day 8, Mongo DB

new 보라 2023. 8. 25. 18:59

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를 꼭 넣어줘야함

 

참조

MongoDB강좌

'개발자가 되었다?' 카테고리의 다른 글

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