본문 바로가기

MongoDB

MongoDB의 기본을 알아보자 - 1

use DATABASE_NAME

사용하고자 하는 DB의 이름을 입력

db

현재 사용 중인 db 이름을 출력

show dbs

현재 생성된 DB들의 이름과 크기를 출력한다.

db.dropDatabase()

사용 중인 DB를 삭제한다.

db.createCollection(name, options)
//option : capped (Boolean), autoIndexId (Boolean), size (number), max (number) 생략가능

사용 중인 DB에 Collection을 생성한다.

db.COLLECTION_NAME.drop()

해당 Collection을 삭제한다.

db.COLLECTION_NAME.insertOne(document) // insertMany(document, document, ...)

Collection에 삽입. 문서형의 내용을 다음 예시처럼 삽입할 수 있다.

db.COLLECTION_NAME.find() // findOne() option : pretty()

find()를 하면 조건에 맞는 것을 출력한다. 비워두면 모든 것을 출력한다.

findOne()을 하면 조건에 맞는 첫 번째 것을 출력한다.

SQL -> SELECT <프로젝션> FROM <테이블> WHERE <검색조건>

MongoDB -> find(<검색조건>, <프로젝션>)

검색 조건 :

연산자 의미 문법 예시 RDBMS 에서는
$eq = {<key>, <value>}
{<key>:{$sq:<value>}}
find({"title":"MongoDB test"})
find({"title":{$eq:"MongoDB test"}})
where title = 'MongoDB test'
$lt < {<key>:{$lt:<value>}} find({"likes":{$lt:"100"}}) where likes < 100
$lte <= {<key>:{$lte:<value>}} find({"likes":{$lte:"100"}}) where likes <= 100
$gt > {<key>:{$gt:<value>}} find({"likes":{$gt:"100"}}) where likes > 100
$gte >= {<key>:{$gte:<value>}} find({"likes":{$gte:"100"}}) where likes >= 100
$ne != {<key>:{$ne:<value>}} find({"likes":{$ne:"100"}}) where likes != 100

and 연산 : find({$and:[<조건1>, <조건 2>]}) 생략 가능

1. 생략하고 하나의 서브 문서로 묶어서 표현하거나

2. $and 연산자를 이용하여 결합가능

예시 :

1 ->

db.COLLECTION_NAME.find({"likes":{$gt:10, $lt:110}})

2 ->

db.COLLECTION_NAME.find({$and:[{"likes":{$gt:10}},{"likes":{$lt:110}}]})

3 -> 다음과 같이 사용하지 말아야 한다.

db.COLLECTION_NAME.find({"likes":{$gt:10}},{"likes":{$lt:110}})

or 연산 : find({$or:[<조건 1>, <조건 2>]}) and와 달리 생략이 불가능하다.

db.testCol.find({$or:[{"likes":100}, {"likes":50}]})
db.testCol.find({"likes":{$in:[50,100]}})

and, or를 아래처럼 같이 사용할 수 있다.

and는 생략 가능하므로

db.testCol.find({"likes":{$gt:10}, $or:[{"title":"MongoDB test"},{"description":"anything"}]})

이 밖에

$nor, $not 등 이 있다.

not의 경우 find({"age":{$not:{$gt:25}}})라고 한다면, age < 25이 아닌 경우가 출력된다.

 

RDBMS의 select와 같이 사용할 수도 있다.

find(<조건>, <프로젝션>) 에서 프로젝션에 {<필드명>:값} (검색 결과에 나타내려면 1 아니면 0)을 기입하면 된다.

여기서 필드 값으로 1과 0을 섞어서 사용할 수 없지만, "_id"의 경우에는 가능하다. (기본적으로 1로 되어있기 때문이다.)