0.설치
MongoDB 공식 홈페이지에서 설치한다.
설치도중 보이는 MongoDB Compass는 GUI 툴이니까 필요에 따라 설치하자
https://www.mongodb.com/try/download/community
.
1.MongoDB 연산자
$는 특정 연산을 수행하는 키워드 앞에 붙는다.
1-1.비교
- $eq 값이 같은 경우
- { age: { $eq: 25 } } (age가 25인 문서)
- $ne 값이 다른 경우
- { age: { $ne: 25 } } (age가 25가 아닌 문서)
- $gt 값이 큰 경우
- { age: { $gt: 25 } } (age가 25보다 큰 문서)
- $gte 값이 크거나 같은 경우
- { age: { $gte: 25 } } (age가 25 이상인 문서)
- $lt 값이 작은 경우
- { age: { $lt: 25 } } (age가 25보다 작은 문서)
- $lte 값이 작거나 같은 경우
- { age: { $lte: 25 } } (age가 25 이하인 문서)
- $in 배열 내 값 포함
- { age: { $in: [25, 30, 35] } } (age가 배열 내 값인 문서)
- $nin 배열 내 값 제외
- { age: { $nin: [25, 30, 35] } } (age가 배열 값이 아닌 문서)
1-2.논리 연산자
- $and 조건 모두 참인 경우
- { $and: [ { age: { $gt: 20 } }, { age: { $lt: 30 } } ] }
- $or 조건 중 하나 이상 참인 경우
- { $or: [ { age: { $lt: 20 } }, { age: { $gt: 30 } } ] }
- $not 조건 부정
- { age: { $not: { $gte: 25 } } } (age가 25 이상이 아닌 문서)
- $nor 조건 모두 거짓인 경우
- { $nor: [ { age: { $lt: 20 } }, { age: { $gt: 30 } } ] }
1-3.배열 연산자
- $all 배열이 특정 모든 값을 포함하는 경우
- { tags: { $all: ["tech", "science"] } }
- $elemMatch 배열의 요소가 조건을 만족하는 경우
- { scores: { $elemMatch: { $gt: 80, $lt: 90 } } }
- $size 배열의 길이가 특정 값과 같은 경우
- { tags: { $size: 3 } }
1-4.필드 갱신 연산자
- $set 필드 값을 설정
- db.users.updateOne({ _id: 1 }, { $set: { age: 30 } })
- $unset 필드를 제거
- db.users.updateOne({ _id: 1 }, { $unset: { age: "" } })
- $inc 필드 값을 증가 또는 감소
- db.users.updateOne({ _id: 1 }, { $inc: { age: 1 } })
- $rename 필드 이름 변경
- db.users.updateOne({ _id: 1 }, { $rename: { age: "years" } })
- $push 배열에 값 추가
- db.users.updateOne({ _id: 1 }, { $push: { tags: "new" } })
- $pull 배열에서 값 제거
- db.users.updateOne({ _id: 1 }, { $pull: { tags: "old" } })
- $addToSet 배열에 중복 없이 값 추가
- db.users.updateOne({ _id: 1 }, { $addToSet: { tags: "unique" } })
1-5.텍스트 검색 연산자
- $text 텍스트 인덱스 기반 검색
- { $text: { $search: "keyword" } }
- $regex 정규식을 사용한 패턴 검색
- { name: { $regex: /^J/, $options: "i" } }
1-6.집계 연산자
- $sum 값을 합산
- { $group: { _id: null, total: { $sum: "$price" } } }
- $avg 평균값 계산
- { $group: { _id: null, avgAge: { $avg: "$age" } } }
- $max 최대값 반환
- { $group: { _id: null, maxAge: { $max: "$age" } } }
- $min 최소값 반환
- { $group: { _id: null, minAge: { $min: "$age" } } }
- $count 문서 수 반환
- { $count: "total" }
2.기본 문법
2-1.테이블 생성
컬렉션 생성 시 데이터 스키마를 정의하지 않음. 첫 데이터를 삽입할 때 컬렉션이 자동 생성됨.
db.createCollection("users");
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
2-2. 데이터 삽입
JSON 형식의 객체(document)를 삽입
db.users.insertOne({ id: 1, name: "John", age: 30 });
INSERT INTO users (id, name, age) VALUES (1, 'John', 30);
2-3.데이터 조회
JSON 쿼리 형식으로 document를 필터링
db.users.find({ age: { $gt: 25 } });
SELECT * FROM users WHERE age > 25;
2-4.데이터 수정
필터 조건을 지정하고 $set 같은 연산자를 통해 업데이트
db.users.updateOne({ id: 1 }, { $set: { age: 35 } });
UPDATE users SET age = 35 WHERE id = 1;
2-5.데이터 삭제
document를 조건에 맞춰 삭제
db.users.deleteOne({ id: 1 });
DELETE FROM users WHERE id = 1;
2-6.조건
JSON 기반 연산자로 $eq, $gt, $lt, $and, $or 사용
db.users.find({ age: { $gt: 25 }, name: "John" });
SELECT * FROM users WHERE age > 25 AND name = 'John';
반응형
'Computer Science > DataBase' 카테고리의 다른 글
[DB] Redis(Remote Dictionary Server) (0) | 2025.01.21 |
---|---|
[DataBase] NoSQL 데이터베이스는 뭘까 (0) | 2024.11.08 |
[SQLD] 2과목 DDL, DCL (0) | 2024.05.09 |