본문 바로가기
IT Tech/MongoDB

MongoDB 기초 - MongoDB Database,Collection,Document 기본 사용법

by 알아봉봉 2020. 10. 8.
반응형
반응형

앞선 포스팅에서 MongoDB란 무엇이고 RDB와의 비교를 통해 기본적인 개념에 대한 이야기를 하였는데요

오늘은 해당 포스팅에 이어서 MongoDB의  기본 조작 방법에 대해 이야기 해 보고자 합니다

 

MongoDB가 아직 생소하신 분들 이라면 앞서 포스팅하였던 MongoDB의 기본개념에 대해 한번 보고서 따라오시는 것이 좋을것 같습니다 :)

 

2020/09/23 - [IT Tech/MongoDB] - MongoDB의 기본개념

 

그럼 MongoDB의 Database, Collection, Document의 기본 사용법에 대한 이야기를 시작하도록 하겠습니다

 

MongoDB Database 기본 사용법

반응형

MongoDB의 Database 확인방법

자신이 접속한 MongoDB에 어떠한 Database 들이 있는지 확인을 하기 위해서는 "show databases"  명령어를 사용합니다

 

> show databases
admin      0.000GB
config     0.000GB
local      0.000GB

 

root 권한으로 최초 접속하면 위와 같이 기본적인 database들의 목록이 보여 집니다.

 

MongoDB의 Database 생성방법

MongoDB에 새로운 Database생성을  위해서는 "use" 명령어를 사용 합니다.

> use testdatabase
switched to db testdatabase

 

위 예시는 testdatabase를 생성/선택 하는 예제입니다. 새로운 데이터베이스를 생성하는 명령어에 대한 소개라고 했는데 갑자기 "선택"이라는 말에

조금 의아하실수도 있습니다. 이는 해당 명령어는 database를 선택할때도 사용되기 때문입니다.

 

해당 명령어는 새로운 Database를 생성한다는 의미보다 특정 데이터베이스를 선택한다는 느낌이 조금더 있습니다.

이러한 특성에 따라 database switching 후에 다시한번 Database 리스트를 확인하는 "show databases" 를 통해 확인해 보면 분명 testdatabase를

선택하였는데도 해당 데이터베이스가 목록에 노출되지 않는 것을 확인 할 수 있습니다.

> show databases
admin      0.000GB
config     0.000GB
local      0.000GB

 

이는 Databae에 최소 한개 이상의 Collection이 생성되는 시점에 mongodb의 데이터베이스가 실제 생성되기 때문입니다.

 

MongoDB의 Database 삭제방법

MongoDB의 Database를 삭제하기 위해서는 우선 해당 데이터베이스를 선택해야됩니다.앞서 이야기 드렸던 use 명령어를 통해 database를 선택합니다.

> use testdatabase
switched to db testdatabase

 

이후 선택된 데이터베이스의 삭제는 "db.dropDatabase()" 명령어를 통해 진행합니다.

> db.dropDatabase()
{ "dropped" : "testdatabase", "ok" : 1 }

 

예시를 위해 testdatabase에 Collection을 미리 생성해 두었기에 위와같은 결과가 보여 집니다.

단순히 db가 선택된 상태에서 "db.dropDatabase()" 명령어를 실행하였다면 아래와 같은 결과를 만나게 될 수 있습니다.

> db.dropDatabase()
{ "ok" : 1 }

 

MongoDB Collection 기본 사용법

반응형

 

이어서 MongoDB Collection의 기본 사용법에 대해 이야기 드리겠습니다. Collection을 Operation하기 위해서는 Database를 선택해야 합니다.

아래 설명에서는 특정 Database를 선택하였다는 가정하에 진행되니 참고해 주시기 바랍니다.

MongoDB Collection 확인방법

MongoDB 에서 자신이 선택한 database의 Collection 리스트를 확인하기 위해서는 database와 마찬가지로 "show"  명령어를 활용한

"show collections" 을통해 확인할 수 있습니다.

 

> show collections
>

 

아직 Collection 생성 전이라 아무런 값도 보이지 않는 모습이군요

MongoDB Collection 생성방법

MongoDB Collection을 생성해 보도록 합시다 Collection 생성시에는 "db.createCollection()" 명령어를 사용합니다

엇!? 나는 collection을 어떤 이름으로 생성할지 지정해 주지 않았는데 무슨 근거로 collection을 만든다는거지!? 라는 생각이 드셨을거에요

실제 생성을 위해서는 괄호안에 파라미터를 전달해 주어야 됩니다.

 

db.createCollection(name, [options])

 

name부분에 생성할 collection의 이름을 넣어주시고, options에는 말그대로 collection을 생성할때 추가적으로 넣어줄 option들을 입력해 주면 됩니다 옵션에 대한 기본적인 타입들은 아래 표를 참고해 주세요

 

Field Type Description
capped Boolean capped collection 을 활성화 유무 설정
Capped collection 이란, 고정된 크기를 가진 컬렉션으로 size 가 초과되면
가장 오래된 데이터를 덮어씀. 이 값이 true일때 size값을 필수로 설정해야 함
autoIndex Boolean _id 필드에 index를 자동으로 생성 유무 설정
size number Capped collection 활성시 해당 컬렉션의 최대 사이즈를 bytes로 지정
max number 해당 컬렉션에 추가 할 수 있는 최대 갯수를 설정

 

저희는 아직 기본적인 사항들을 활용해 보는 단계이니 우선 이름만 넣어서 생성해 봅시다

> db.createCollection("testCollection")
{ "ok" : 1 }

 

정상적으로 생성된것 같습니다 리스트확인을 통해 collection이 잘 있는지 한번 확인해 보죠

> show collections
testCollection

 

잘 생성 되었군요! 다행입니다 :)

 

MongoDB Collection 삭제방법

아쉽긴 하지만, 삭제방법에 대해 알아보기 위해 잘~ 생성해 놓은 Collection을 한번 삭제해 보도록 하겠습니다.

Databese와 달리 Collection은 선택하는 부분이 없기에 삭제할 Collection의 name과 함께 "drop()" 메소드를 사용합니다.

 

db.COLLECTION_NAME.drop()

 

> db.testCollection.drop()
true

 

잘 삭제되었다고 true를 전달해 줍니다. 언제나 true를 전달해 주는거 아니야!? 라는 생각에 다시한번 시도해 봅니다

> db.testCollection.drop()
false

 

현재 선택된 database에 testCollection이 현재 존재하지 않기 때문에 false가 리턴됩니다

그럼 이제 실제로 Data들을 추가해 보는 방법에 대해 알아보도록 하겠습니다

 

MongoDB Document기본 사용법

반응형

MongoDB Document 리스트확인방법

데이터베이스 안에 컬렉션이 존재하고 그 컬렉션안에 다큐먼트가 관리됩니다. 그렇기에 특정 컬렉션 안에 있는 다큐먼트들을 확인하기위해서는 Collection명과 함께 "find()" 메소드를 사용합니다.

> db.testCollection.find()
> 

 

Collection만 만들어 두었기 때문에 아무런 Document가 보이지 않네요

find 메소드에는 아래와 같은 매개변수를 전달할수 있습니다 다음번에 자세히 이야기 드릴 예정이니 참고만 해주세요 ^^;

parameter Type Description
query document Optional 매개변수이며 이 값이 { } 이면 컬렉션의 모든 데이터를 조회
projection document Optional 매개변수이며 조회할 때 보여질 field 선택

MongoDB Document 추가 방법

그럼 Document를 추가해 보도록 lection명과 함께 "insert()" 메소드를 사용합니다.

> db.testCollection.insert({"name":"bong"})
WriteResult({ "nInserted" : 1 })

 

위 예제는 "name" 이라는 key에 "bong"이라는 value를 가지는 Document를 추가한 예제입니다

해당 Document가 Collection에 잘 들어가 있는지 확인해 볼까요?

> db.testCollection.find()
{ "_id" : ObjectId("5f7edbf08fcd637a0679272e"), "name" : "bong" }

 

잘 들어가 있군요. "_id"를 넣은적이 없는데 이건뭐지? 라고 생각되시는 분은 맨~ 위에 제가 이전에 포스팅했던 기본부분을 보고 와 주세요 :)

참고로 Collection을 생성하지 않아도 Document생성시점에  해당 명칭의 Collection이 자동으로 생성된답니다

MongoDB Document 삭제방법

마지막으로 생성된 Documnet를 삭제하는 방법에 대해 알아보도록 하겠습니다.

Document를 삭제하기 위해서는 Collection명과 함께 "remove()" 메소드를 사용합니다

 

remove 메소드는 criteria 가 필수 파라미터로 전달되어야 되는데요. 해당 부분은 앞서 find 설명시에도 잠시 언급했던 부분이긴 하나 기본 설명을 진행하기 위해서 해당 부분에 대한 자세한 설명은 다음으로 미뤄두도록 하겠습니다.

parameter Type Description
criteria document 삭제 할 데이터의 기준 값. 이 값이 { } 이면 컬렉션의 모든 데이터를 제거
justOne Boolean Optional 매개변수이며 이 값이 true 면 1개 의 다큐먼트만 제거

 

앞에서 생성하였던 Document를 삭제해 보도록 하겠습니다

> db.testCollection.remove({})
WriteResult({ "nRemoved" : 1 })

 

nRemoved 가 1로 표시가 되는 것은 현재 삭제된 Document가 1건이라는 뜻입니다. 1건이상이었다면 그만큼의 수가 표시되었겠죠?

참고로 해당 명령어를 실제로 사용하시면 해당 Collection에 있는 모든 Document가 삭제 되니 다음에 이야기 드릴 criteria에 대해 조금더 알아본 뒤 실제 사용시에는 꼭!! 주의하세요

 

그럼 정상적으로 삭제가 되었는지 다시한번 확인해 볼까요?

> db.testCollection.find()
> 

 

아무겂도 없네요 다시한번 삭제를 해봅니다

> db.testCollection.remove({})
WriteResult({ "nRemoved" : 0 })

 

아무런 Document도 없었기 때문에 0건으로 결과가 나오네요

 

오늘은 여기까지 MongoDB의 기본적인 사용법에 대해서 알아보았습니다.

따라오시느라 수고 많으셨구요~ 다음번에는 criteria 사용법에 대해서 알아보도록 하겠습니다

 

즐거운 하루 되세요 :)

반응형

댓글