CRUD 작업
공유하기:
CRUD 작업
1. 쓰기 작업 (Create & Update)
Write Concern
쓰기 작업의 안정성을 결정하는 옵션입니다.
- w: 1: 기본값. Primary 노드의 메모리에만 쓰기가 성공하면 응답.
- w: majority: 과반수 이상의 노드에 쓰기가 완료되어야 성공으로 간주.
- j (journal): 저널 파일(디스크)에 기록될 때까지 기다릴지 여부.
2. 쿼리 연산자 (Read)
조회 시 사용하는 핵심 연산자들입니다.
| 연산자 | 설명 |
|---|---|
$eq, $ne | 같음, 같지 않음 |
$gt, $gte, $lt, $lte | 큼, 크거나 같음, 작음, 작거나 같음 |
$in, $nin | 배열 내 존재 여부 |
$and, $or, $not | 논리 연산자 |
$exists | 필드 존재 여부 확인 |
3. 업데이트 연산자
$set: 필드 값 설정.$unset: 필드 삭제.$inc: 필드 값을 특정 수만큼 증가/감소.$push: 배열에 요소 추가.$pull: 배열에서 요소 제거.
4. 실습 명령어
// 데이터 삽입
db.users.insertOne({ name: "Chayoung", age: 25 })
// 조건 조회 및 정렬
db.users.find({ age: { $gte: 20 } }).sort({ name: 1 })
// 특정 필드만 조회 (Projection)
db.users.find({}, { name: 1, _id: 0 })
// 데이터 업데이트 (필드가 없으면 추가)
db.users.updateOne(
{ name: "Chayoung" },
{ $set: { status: "active" } }
)5. 시험 팁 (Certification Tips)
w: majority옵션의 의미와 성능/안정성 간의 트레이드오프를 이해하세요.upsert: true옵션의 역할을 숙지하세요 (매칭되는 문서가 없으면 생성).- 프로젝션에서
_id를 제외한 나머지는 0과 1을 섞어 쓸 수 없다는 점 주의 (예외:_id: 0).
6. 베스트 프랙티스
- 대량의 데이터를 삽입할 때는
insertOne대신insertMany를 사용하여 네트워크 라운드트립을 줄이세요. - 쿼리 성능을 높이기 위해 자주 조회되는 필드에는 인덱스를 생성하세요.