JX405기_비트/mongoDB
Day17-0 MongoDB Day16 요약 & SQL과 비교
_하루살이_
2023. 2. 8. 11:32
Review
- Database 생성
- user database_name으로 생성
- 1개 이상의 collection이 존재해야 database리스트에서 확인
- Database 조회
- show dbs : database 리스트 확인
- db : 현재 사용중인 database 확인
- Collection 생성
- db.createCollection(name, [option])으로 collection 생성
- name은 collection 이름이고, option은 document타입으로 구성된 해당 collection의 설정값
- option 객체의 속성들
- capped : Boolean타입, 이 값을 true로 설정하면 capped collection을 활성화, Capped collection이란 고정된 크기를 가진 collection으로, size가 초과되면 가장 오래된 데이터를 덮어씀, 이 값을 true로 설정하면 size 값을 꼭 설정
- size : number타입, capped collection을 위해 해당 collection 최대 사이즈를 ~byte로 지정
- max : number타입, 해당 collection에 추가할 수 있는 최대 document 개수를 설정
- Collection 조회
- show collections로 collection 리스트 확인
- Collection 제거
- db.collection명.drop()으로 collection 제거
- Document 생성
- db.collection명.insert(document)로 document추가
- 배열 형식으로 전달하면 여러 document를 bulk형식으로 추가
- Document 조회
- db.collection명.find([query, projection])로 collection의 document 리스트 확인
- 한 줄이 너무 길어 불편할 때는 끝에 .pretty()를 붙이면 사용자가 보기 편하게 결과 출력
- Document 제거
- db.collection명.remove(criteria[, justOne])로 document 제거
- 매개변수로 들어가는 객체의 속성들은 아래와 같음
- criteria : document타입, 데이터의 기준 값으로 일치하면 기본적으로 다 삭제, 이 값이 {} 이면 collection의 모든 데이터를 제거, 반드시 넣어야 함
- justOne : Boolean 타입, optional 매개변수이며, 이 값이 true이면 1개의 document만 제거, 이 매개변수가 생략되면 기본 값을 false이고, criteria에 해당되는 모든 document 제거
- MongoDB 종료
- 몽고쉘에서 데몬 종료
- use admin
- db.shutdownServer()
SQL vs MongoDB 용어 정리
SQL 용어 | MongoDB 용어 |
database | Database |
table | Collection (도큐먼트들의 집합) |
row | 도큐먼트 or BSON document (필드 : 값의 쌍으로 이루어짐) |
column | field |
index | index |
table joins | embedded document (내장 도큐먼트) |
primary key | primary key |
하나의 열 도는 여러 열의 조합으로 기본 키를 생성 | 기본키를 지정할 필요없이 _id 필드를 자동으로 기본키로 설정 |
SQL SELECT Statement | MongoDB find() Statement |
SELECT * FROM samples | db.samples.find() |
SELECT id, user_id, status FROM samples | db.samples.find({}. {user_id : 1, status : 1}) |
SELECT user_id, status FROM samples | db.samples.find({}, {user_id : 1, status : 1, _id : 0}) |
SELECT * FROM samples WHERE status = "B" | db.samples.find({status: "B"}) |
SELECT user_id, status FROM samples WHERE status = "A" | db.samples.find({status: "A"}, {user_id : 1, status : 1, _id: 0}) |
SELECT * FROM samples WHERE status != "A" | db.samples.find({status : {$ne : "A"}}) |
SELECT * FROM samples WHERE status = "A" AND age = 50 | db.samples.find({status : "A", age : 50}) |
SELECT * FROM samples WHERE status = "A" OR age = 50 | db.samples.find({$or : [{status : "A"}, {age: 50}]}) |
SELECT * FROM samples WHERE age > 25 | db.samples.find({age : {$gt: 25}}) |
SELECT * FROM samples WHERE age < 25 | db.samples.find({age : {$lt: 25}}) |
SELECT * FROM samples WHERE age > 25 AND age <= 50 | db.samples.find({age : {$gt: 25, $kte: 50}}) |
SELECT * FROM samples WHERE user_id LIKE "%bc%" | db.samples.find({user_id : /bc/}) 또는 db.samples.find({user_id : {$regex : /bc/}}) |
SELECT * FROM samples WHERE user_id LIKE "bc%" | db.samples.find({user_id : /^bc/}) 또는 db.samples.find({user_id : {$regex : /^bc/}}) |
SELECT * FROM samples WHERE status = "A" ORDER BY user_id ASC | db.samples.find({status : "A"}).sort({user_id : 1}) |
SELECT * FROM samples WHERE status = "A" ORDER BY user_id DESC | db.samples.find({status : "A"}).sort({user_id : -1}) |
SELECT COUNT(*) FROM samples | db.samples.count() or db.samples.find().count() |
SELECT COUNT(user_id) FROM samples | db.samples.count({user_id : {$exists : true}}) 또는 db.samples.find({user_id : {$exists : true}}).count() |
SELECT COUNT(*) FROM samples WHERE age > 30 | db.samples.count({age : {$gt : 30}}) 또는 db.samples.find({age : {$gt : 30}}).count() |
SELECT * FROM samples LIMIT 1 | db.samples.findOne() 또는 db.samples.find().limit(1) |
EXPLAIN SELECT * FROM samples WHERE status = "A" | db.samples.find({status : "A"}).explain() |
SQL Update Statements | MongoDB updateMany() Statements |
UPDATE samples SET status = "C" WHERE age > 25 | db.samples.updateMany({age : {$gt: 25}}, {$set: {status: "C"}}) |
UPDATE samples SET age = age+3 WHERE status = "A" | db.samples.updateMany({status : "A"}, {$inc: {age : 3}}) |
SQL Delete Statements | MongoDB deleteMany() Statements |
DELETE FROM samples WHERE status = "D" | db.samples.deleteMany({status : "D"}) |
DELETE FROM samples | db.samples.deleteMany({}) |