[MongoDB] 기본 명령어, CRUD (vs MySQL)

조상래·2021년 5월 21일
0

MongoDB

목록 보기
3/5

MongoDB의 명령어는 MySQL보다 조금 더 간결하다. 그리고 CRUD 쿼리문에 있어서 SQL 쿼리문 처럼 길게 나열하는 것이 아닌 객체를 활용하는 메소드 형식으로 명령어가 구성되어있기 때문에 훨씬 더 직관적으로 또 코드를 작성할 때 이질감이 없이 사용할 수 있다. (MongoDB 쿼리문 자체가 ORM이라고 설명하면 될런가?)

기본 명령어

MongoDB는 기본적으로 camelCase를 쓴다.

1) DB 관련

MongoDB (대소문자 구분 0)MySQL (대소문자 구분 X)
DB 보기show dbsSHOW DATABASES;
DB 생성use DB이름CREATE DATABASE DB이름;
DB 선택use DB이름USE DB이름;
현재 DBdbSELECT DATABASE();
현재 DB 정보db.stats()X
DB 삭제(DB 선택 후) db.dropDatabase()DROP DATABASE DB이름;

2) Collection(Tables) 관련

Collection은 기본적으로 Primary Key가 필요없다. Document가 생성될 때 마다. _id가 그 역할을 한다. 타입도 지정해 줄 필요가 없다. 벨류 자체로 타입을 결정한다.

MongoDB (대소문자 구분 0)MySQL (대소문자 구분 X)
Collection(Table) 보기show collectionsSHOW TABLES;
Collection(Table) 생성db.createCollection("Collection 이름", { *옵션 })CREATE TABLE tabe이름(필드명 타입, ...);
Collection(Table) 정보db.Collection이름.stats()DESC Table이름;
Collection(Table) 구조 수정XALTER TABLE Table이름 옵션;
Collection(Table) 삭제db.Collection이름.drop()DROP TABLE Table이름;

* 옵션: {capped: true, size: 10000}로 capped 설정을 줄 수 있으며 capped는 최초의 제한된 size만큼만 데이터를 저장하도록 한다.

3) CRUD

MongoDB는 정해진 규격이 없는 만큼 쿼리문 작성이 자유롭게 느껴진다.

MongoDB (대소문자 구분 0)MySQL (대소문자 구분 X)
Createdb.Collection이름.insertOne({필드: 값})
db.Collection이름.insertMany([{필드: 값},{필드: 값}, ...])
INSERT INTO (필드, 필드, ... ) VALUES (값, 값);
Readdb.Collection이름.findOne({필드: *조건},{필드: 조건}...}).**조건메소드()
db.Collection이름.find() ({필드: 조건}을 생략하면 모두 조회)
SELECT (필드, 필드, ...) FROM Table이름
Updatedb.Collection이름.updateOne({필드: 조건}, {*** $set/$inc: {필드: 값}})
db.Collection이름.updateMany({필드: 조건}, {$set/$inc: {필드: 값}})
UPDATE table이름 SET 필드= 값 WHERE 조건
Deletedb.Collection이름.remove({필드: 조건})
db.Collection이름.deleteOne({필드: 조건})
db.Collection이름.deleteMany({필드: 조건)}
DELETE FROM Tabel이름 WHERE 조건

* 조건: MongoDB도 마찬가지로 비교 문법이 있다. {$gt: 30} 과 같은 방식으로 작성

MongoDBMySQL
$eq=
$gt>
$gte>=
$inIN
$lt<
$lte<=
$ne!=
$ninNOT IN
$or ($or:[{필드: 조건}, {필드: 조건}])OR
$and($or과 같은방식)AND
$regex (정규표현식)REGEXP

** 조건메소드(): .count() / .limit(1) / .distinct()
*** $set/ $inc: $set은 SQL 쿼리문 UPDATE의 SET과 대응, $inc는 값을 증가/감소

profile
Codestates Full IM26기 수료

0개의 댓글