MongoDB — 문서 데이터베이스의 판단 · 문서 모델과 실행 계획 · 실습
MongoDB — 끼워 넣기와 실행 계획
목표
파드 안에서 도는 진짜 MongoDB 8.0 위에서 문서를 넣고, 찾고, 인덱스를 걸고,
집계하고, 스키마를 걸고, 끼워 넣기를 해 봅니다. 마지막에는 실행 계획을 읽어
숫자로 적습니다.
접속
mongosh labdblabdb 를 씁니다. PostgreSQL 도 같은 파드에서 돌고 있으니 psql 도 그대로
됩니다 — 두 데이터베이스를 나란히 두고 같은 문제를 각각 풀어 보면 차이가
훨씬 선명해집니다.
결과 파일
몇 단계는 결과를 파일로 남깁니다. mkdir -p /root/work/mongo 를 먼저 하세요.
셸에서 JSON 을 저장할 때는 이렇게 씁니다.
mongosh --quiet labdb --eval 'JSON.stringify(db.items.find({},{_id:0}).toArray())' > /root/work/mongo/02-query.json단계 8개
- 문서를 넣는다 — 값이 배열일 수도 있다
확인 기준: items 에 5건 이상 · 각 문서에 name·qty·tags(배열) - 필요한 필드만 가져온다
확인 기준: 02-query.json 에 qty>0 인 문서가 name·qty 만 담겨 있음 - 인덱스를 만들고 계획이 바뀌는지 본다
확인 기준: name 인덱스가 있고 그 조회가 IXSCAN 을 탑니다 - 한 필드만 바꾼다
확인 기준: qty 는 10 이고 name·tags 는 그대로 남아 있음 - 배열을 펼쳐 태그별로 묶는다
확인 기준: 05-bytag.json 의 태그별 합계가 실제 값과 일치 - 문서 DB 에도 스키마를 건다
확인 기준: orders 에 $jsonSchema 검증이 있고 잘못된 타입이 실제로 거부됨 - 함께 읽히는 것은 끼워 넣는다
확인 기준: 주문 문서 하나에 lines 2건 이상 · lines.name 으로 조회됨 - 계획을 읽고 숫자로 적는다
확인 기준: 08-explain.txt 에 IXSCAN·COLLSCAN 과 숫자가 함께 적혀 있음