티스토리 뷰

Computer Science/Database

[MongoDB] 강좌 2편: Database/Collection/Document 생성·제거

꿈을 위해 잠을 잊은 그대에게 2018. 7. 29. 23:56

이번 강좌에서는 Database, Collection, Document 를 생성하는 명령어와 제거하는 명령어를 배워보도록 하겠습니다. 이 세가지 키워드의 관계는 아래 이미지와 같습니다. 이 단어들이 생소하신분은 전 강좌를 읽어주세요.

ffff

Database 생성: use

use DATABASE_NAME 명령어를 통하여 Database를 생성 할 수 있습니다.
생성 후, 생성된 데이터베이스를사용하게 되구요,  데이터베이스가 이미 존재하는 경우엔 현존하는 데이터베이스를 사용합니다.

예제: mongodb_tutorial 이라는 데이터베이스를 생성합니다.

> use mongodb_tutorial
switched to db mongodb_tutorial

현재 사용중인 데이터베이스를 확인하려면 db 명령어를 입력하세요.

> db
mongodb_tutorial

내가 만든 데이터베이스 리스트들을 확인하려면 show dbs 명령어를 입력하세요.

> show dbs
local  0.000GB

엥?! 방금 만든 mongodb_tutorial 이 없죠?
리스트에서 방금 만든 데이터베이스를 보려면 최소 한개의 Document를 추가해야합니다.

> db.book.insert({"name": "MongoDB Tutorial", "author": "velopert"});

WriteResult({ "nInserted" : 1 })
> show dbs
local             0.000GB
mongodb_tutorial  0.000GB

* 여기서 book 은 Collection 입니다. 따로 Collection 을 미리 생성하지 않아도
위처럼 명령어를 작성하는데 차질이 없습니다.

Database 제거: db.dropDatabase()

Database를 제거할땐 db.dropDatabase() 명령어를 사용합니다.

이 명령어를 사용하기 전, use DATABASE_NAME 으로 삭제하고자 하는 데이터베이스를 선택해줘야합니다.

예제: mongodb_tutorial 데이터베이스를 제거합니다.

> use mongodb_tutorial
switched to db mongodb_tutorial
> db.dropDatabase();
{ "dropped" : "mongodb_tutorial", "ok" : 1 }

 

Collection 생성: db.createCollection()

Collection을 생성할때는 db.createCollection(name, [options]) 명령어를 사용합니다.

name 은 생성하려는 컬렉션의 이름이며 option 은 document 타입으로 구성된 해당 컬렉션의 설정값입니다.
options 매개변수는 선택적인(Optional) 매개변수로서 생략하셔도 되고, 필요에따라 사용하면 됩니다.

 

Option: 

FieldType설명
cappedBoolean이 값을 true 로 설정하면 capped collection 을 활성화 시킵니다. Capped collection 이란, 고정된 크기(fixed size) 를 가진 컬렉션으로서, size 가 초과되면 가장 오래된 데이터를 덮어씁니다. 이 값을 true로 설정하면 size 값을 꼭 설정해야합니다.
autoIndexBoolean이 값을 true로 설정하면, _id 필드에 index를 자동으로 생성합니다. 기본값은 false 입니다.
sizenumberCapped collection 을 위해 해당 컬렉션의 최대 사이즈(maximum size)를 ~ bytes로 지정합니다.
maxnumber해당 컬렉션에 추가 할 수 있는 최대 갯수를 설정합니다.

 

예제1 : test 데이터베이스에 books 컬렉션을 옵션없이 생성합니다.

> use test
switched to db test
> db.createCollection("books")
{ "ok" : 1 }

예제2: test 데이터베이스에 articles 컬렉션을 옵션과 함께 생성합니다.

> db.createCollection("articles", {
... capped: true,
... autoIndex: true,
... size: 6142800,
... max: 10000
... })
{ "ok" : 1 }

예제3: 따로 createCollection() 메소드를 사용하지 않아도 document를 추가하면 자동으로 컬렉션이 생성됩니다.

> db.people.insert({"name": "velopert"})
WriteResult({ "nInserted" : 1 })

내가 만든 collection 리스트를 확인하려면 show collections 명령어를 입력하세요.

> show collections
articles
books
people

 

Collection 제거: db.COLLECTION_NAME.drop()

Collection을 제거 할 땐 drop()  메소드를 사용합니다.

당연히, 이 명령어를 제거하기 전, 사용 할 데이터베이스를 우선 설정해야겠죠?

예제: test 데이터베이스의 people 컬렉션을 제거합니다.

> use test
switched to db test
> show collections
articles
books
people
> db.people.drop()
true
> show collections
articles
books

 

Document 추가:db.COLLECTION_NAME.insert(document)

insert() 메소드를 사용하여 Document를 추가 할 수 있습니다.

이 명령어를 사용하기 전 데이터를 추가 할 데이터베이스를 선택해주어야합니다.

배열형식의 인자를 전달해주면 여러 다큐먼트를 동시에 추가 할 수 있습니다.

예제1: 한개의 다큐먼트를 books 컬렉션에 추가합니다.

> db.books.insert({"name": "NodeJS Guide", "author": "Velopert"})
WriteResult({ "nInserted" : 1 })

예제2:  두개의 다큐먼트를 books 컬렉션에 추가합니다. (가독성을 위해 여러줄로 작성되었습니다.)

> db.books.insert([
... {"name": "Book1", "author": "Velopert"},
... {"name": "Book2", "author": "Velopert"}
... ]);
BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 2,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})

컬렉션의 다큐먼트 리스트를 확인할때는 db.COLLECTION_NAME.find() 명령어를 사용하세요.

> db.books.find()
{ "_id" : ObjectId("56c08f3a4d6b67aafdeb88a3"), "name" : "MongoDB Guide", "author" : "Velopert" }
{ "_id" : ObjectId("56c08f474d6b67aafdeb88a4"), "name" : "NodeJS Guide", "author" : "Velopert" }
{ "_id" : ObjectId("56c0903d4d6b67aafdeb88a5"), "name" : "Book1", "author" : "Velopert" }
{ "_id" : ObjectId("56c0903d4d6b67aafdeb88a6"), "name" : "Book2", "author" : "Velopert" }

 

Document 제거:db.COLLECTION_NAME.remove(criteria, justOne)

remove(criteria, justOne) 메소드를 사용하여 Document를 제거 할 수 있습니다.
이 메소드에는 두가지의 매개변수가 있는데요,

parametertype설명
*criteriadocument삭제 할 데이터의 기준 값 (criteria) 입니다. 이 값이 { } 이면 컬렉션의 모든 데이터를 제거합니다.
justOneboolean선택적(Optional) 매개변수이며 이 값이 true 면 1개 의 다큐먼트만 제거합니다. 이 매개변수가 생략되면 기본값은 false 로 서, criteria에 해당되는 모든 다큐먼트를 제거합니다.

이 강좌에선 criteria 에 부분에선 특정 field 의 값이 매칭하는 경우만 배워보도록 하겠습니다.  criteria 에 대한 자세한 내용은 다음 강좌에서 다뤄보겠습니다.

다큐먼트 추가 부분에서 find() 메소드를 잠깐 사용했었는데, 이 메소드 역시 criteria를 인수로 전달 할 수 있습니다.  다큐먼트를 제거하다가 실수를 하지 않도록 초보일땐, 제거전에는 find() 를 먼저 해서 확인하는걸 습관화하세요.

예제: books 컬렉션에서 “name”이 “Book1” 인 다큐먼트를 제거

> db.books.find({"name": "Book1"})
{ "_id" : ObjectId("56c097f94d6b67aafdeb88ac"), "name" : "Book1", "author" : "Velopert" }
> db.books.remove({"name": "Book1"})
WriteResult({ "nRemoved" : 1 })
> db.books.find()
{ "_id" : ObjectId("56c08f3a4d6b67aafdeb88a3"), "name" : "MongoDB Guide", "author" : "Velopert" }
{ "_id" : ObjectId("56c08f474d6b67aafdeb88a4"), "name" : "NodeJS Guide", "author" : "Velopert" }
{ "_id" : ObjectId("56c097f94d6b67aafdeb88ad"), "name" : "Book2", "author" : "Velopert" }

 

마무리하며..

이번 강좌에서는 MongoDB 커맨드라인 위에서 Database, Collection 그리고 Document 를 추가하고 제거하는것에 대하여 배웠습니다. 다음 강좌에서는 Document 를 Query(조회/검색) 하는 메소드인 find() 메소드에 대하여 자세히 알아보도록 하겠습니다.


출처 : https://velopert.com/457

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크