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 객체의 속성들
      1. capped : Boolean타입, 이 값을 true로 설정하면 capped collection을 활성화, Capped collection이란 고정된 크기를 가진 collection으로, size가 초과되면 가장 오래된 데이터를 덮어씀, 이 값을 true로 설정하면 size 값을 꼭 설정
      2. size : number타입, capped collection을 위해 해당 collection 최대 사이즈를 ~byte로 지정
      3. 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 제거
    • 매개변수로 들어가는 객체의 속성들은 아래와 같음
      1. criteria : document타입, 데이터의 기준 값으로 일치하면 기본적으로 다 삭제, 이 값이 {} 이면 collection의 모든 데이터를 제거, 반드시 넣어야 함
      2. 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({})