MongoDB의 명령어는 MySQL보다 조금 더 간결하다. 그리고 CRUD 쿼리문에 있어서 SQL 쿼리문 처럼 길게 나열하는 것이 아닌 객체를 활용하는 메소드 형식으로 명령어가 구성되어있기 때문에 훨씬 더 직관적으로 또 코드를 작성할 때 이질감이 없이 사용할 수 있다. (MongoDB 쿼리문 자체가 ORM이라고 설명하면 될런가?)
MongoDB는 기본적으로 camelCase를 쓴다.
MongoDB (대소문자 구분 0) | MySQL (대소문자 구분 X) | |
---|---|---|
DB 보기 | show dbs | SHOW DATABASES; |
DB 생성 | use DB이름 | CREATE DATABASE DB이름; |
DB 선택 | use DB이름 | USE DB이름; |
현재 DB | db | SELECT DATABASE(); |
현재 DB 정보 | db.stats() | X |
DB 삭제 | (DB 선택 후) db.dropDatabase() | DROP DATABASE DB이름; |
Collection은 기본적으로 Primary Key가 필요없다. Document가 생성될 때 마다. _id가 그 역할을 한다. 타입도 지정해 줄 필요가 없다. 벨류 자체로 타입을 결정한다.
MongoDB (대소문자 구분 0) | MySQL (대소문자 구분 X) | |
---|---|---|
Collection(Table) 보기 | show collections | SHOW TABLES; |
Collection(Table) 생성 | db.createCollection("Collection 이름", { *옵션 }) | CREATE TABLE tabe이름(필드명 타입, ...); |
Collection(Table) 정보 | db.Collection이름.stats() | DESC Table이름; |
Collection(Table) 구조 수정 | X | ALTER TABLE Table이름 옵션; |
Collection(Table) 삭제 | db.Collection이름.drop() | DROP TABLE Table이름; |
* 옵션: {capped: true, size: 10000}로 capped 설정을 줄 수 있으며 capped는 최초의 제한된 size만큼만 데이터를 저장하도록 한다.
MongoDB는 정해진 규격이 없는 만큼 쿼리문 작성이 자유롭게 느껴진다.
MongoDB (대소문자 구분 0) | MySQL (대소문자 구분 X) | |
---|---|---|
Create | db.Collection이름.insertOne({필드: 값}) db.Collection이름.insertMany([{필드: 값},{필드: 값}, ...]) | INSERT INTO (필드, 필드, ... ) VALUES (값, 값); |
Read | db.Collection이름.findOne({필드: *조건},{필드: 조건}...}).**조건메소드() db.Collection이름.find() ({필드: 조건}을 생략하면 모두 조회) | SELECT (필드, 필드, ...) FROM Table이름 |
Update | db.Collection이름.updateOne({필드: 조건}, {*** $set/$inc: {필드: 값}}) db.Collection이름.updateMany({필드: 조건}, {$set/$inc: {필드: 값}}) | UPDATE table이름 SET 필드= 값 WHERE 조건 |
Delete | db.Collection이름.remove({필드: 조건}) db.Collection이름.deleteOne({필드: 조건}) db.Collection이름.deleteMany({필드: 조건)} | DELETE FROM Tabel이름 WHERE 조건 |
* 조건: MongoDB도 마찬가지로 비교 문법이 있다. {$gt: 30} 과 같은 방식으로 작성
MongoDB | MySQL |
---|---|
$eq | = |
$gt | > |
$gte | >= |
$in | IN |
$lt | < |
$lte | <= |
$ne | != |
$nin | NOT IN |
$or ($or:[{필드: 조건}, {필드: 조건}]) | OR |
$and($or과 같은방식) | AND |
$regex (정규표현식) | REGEXP |
** 조건메소드(): .count() / .limit(1) / .distinct()
*** $set/ $inc: $set은 SQL 쿼리문 UPDATE의 SET과 대응, $inc는 값을 증가/감소