본문 바로가기
DBMS

몽고DB(MongoDB) 데이터베이스 생성 및 삭제 - 데이터 조작(삽입/갱신/삭제)

by developer's warehouse 2023. 12. 14.

이 글에서는 MongoDB에서 데이터베이스를 생성하고 삭제하는 방법과 테이블에 해당하는 컬렉션(Collection)을 생성하는 법을 알아보고 테스트 방법을 알려드립니다.

 

몽고DB(MongoDB) 데이터베이스 생성 및 삭제 썸네일

몽고DB 데이터베이스 생성

MongoDB에서는 데이터베이스를 명시적으로 생성할 필요가 없습니다. 특정 데이터베이스를 사용하려는 경우, 그 데이터베이스가 존재하지 않으면 MongoDB가 자동으로 생성합니다.

데이터베이스 생성 명령

데이터베이스를 생성하려면 use 명령어를 사용하면 됩니다. 예를 들어, 'myDatabase’라는 이름의 데이터베이스를 생성하려면 다음 명령어를 사용합니다:

use myDatabase

데이터베이스 생성 테스트

작업을 수행하기 위해서 mongosh을 이용합니다. mongosh은 몽고DB에 명령을 수행하는 커맨드라인 툴입니다.

mongosh에 대한 자세한 내용은 다음 링크를 확인하시면 됩니다.

연관글 보기
☞ 우분투에서 몽고DB 테스트를 위해 mongosh을 설치하고 사용하는 방법

 

몽고DB에 존재하는 데이터베이스를 확인 후 특정 데이터베이스를 사용할 수 있습니다. 실제로 테스트해 본 결과 use 만으로는 database가 생성되지는 않고, 실제 database에 어떤 객체가 생성되어서 저장될 때 생성되는 것을 확인했습니다.

$ mongosh
Current Mongosh Log ID: 657a87b09bc84f235a3f05b4
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.1.1
Using MongoDB:          7.0.4
Using Mongosh:          2.1.1

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting
   2023-12-12T16:02:45.583+09:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
   2023-12-12T16:02:46.615+09:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
   2023-12-12T16:02:46.615+09:00: Journaling works best if /proc/sys/vm/overcommit_memory is set to 0 or 1
   2023-12-12T16:02:46.616+09:00: vm.max_map_count is too low
------

test> show dbs
admin   40.00 KiB
config  60.00 KiB
local   40.00 KiB
tpcc    18.11 MiB
test> use tpcc
switched to db tpcc
tpcc> use mytest
switched to db mytest
mytest> show dbs
admin    40.00 KiB
config  108.00 KiB
local    40.00 KiB
tpcc     18.25 MiB
mytest> db.createCollection("mytest")
{ ok: 1 }
mytest> show dbs
admin    40.00 KiB
config  108.00 KiB
local    40.00 KiB
mytest    8.00 KiB
tpcc     18.25 MiB

몽고DB 컬렉션 생성

데이터베이스가 생성되면, 그 안에 컬렉션을 생성할 수 있습니다. 컬렉션은 MongoDB에서 데이터를 그룹화하는 방법입니다. 컬렉션을 생성하려면 db.createCollection() 메서드를 사용하면 됩니다.

컬렉션 생성 명령

예를 들어, 'myCollection’이라는 이름의 컬렉션을 생성하려면 다음 명령어를 사용합니다:

db.createCollection("myCollection")

컬렉션 생성 테스트

tpcc> show collections
CUSTOMER
DISTRICT
HISTORY
ITEM
NEW_ORDER
ORDERS
STOCK
WAREHOUSE
tpcc> db.createCollection("myCollection")
{ ok: 1 }
tpcc> show collections
CUSTOMER
DISTRICT
HISTORY
ITEM
myCollection
NEW_ORDER
ORDERS
STOCK
WAREHOUSE
tpcc>

컬렉션에 데이터 작업

데이터 삽입

특정 컬렉션에 데이터를 삽입하는 것은 insert 함수를 통해 가능합니다.

mongosh에서 다음처럼 {field:value}쌍을 여러 개 입력하여 하나의 레코드를 삽입할 수 있습니다.

tpcc> db.testCol.insertOne({'f1':'1','name':'test'})
{
  acknowledged: true,
  insertedId: ObjectId('657a8d919bc84f235a3f05b6')
}

 

다음을 사용해서 여러개의 레코드를 한 번에 입력할 수도 있습니다.

tpcc> db.testCol.insertMany([{'f1' : 'testuser1', 'name' : '1test1'}, {'f1' : 'testuser2', 'name' : '2test2'}]);
{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId('657a90f09bc84f235a3f05ba'),
    '1': ObjectId('657a90f09bc84f235a3f05bb')
  }
}
tpcc> db.testCol.find()
[
  {
    _id: ObjectId('657a8ea79bc84f235a3f05b9'),
    f1: '1',
    name: 'mytest'
  },
  {
    _id: ObjectId('657a90f09bc84f235a3f05ba'),
    f1: 'testuser1',
    name: '1test1'
  },
  {
    _id: ObjectId('657a90f09bc84f235a3f05bb'),
    f1: 'testuser2',
    name: '2test2'
  }
]

데이터 검색

데이터를 검색 시에는 다음과 같이 전체검색(find)과 동등(=, equal) 검색을 간단히 사용할 수 있습니다. 검색 및 연산자는 다양한 것이 많으므로 추후 다시 기회 되면 다루겠습니다.

이 글에서는 간략하게 사용할 수 있는 방법만 확인해 봅니다.

tpcc> db.testCol.find()
[
  {
    _id: ObjectId('657a8ea79bc84f235a3f05b9'),
    f1: '1',
    name: 'mytest'
  },
  {
    _id: ObjectId('657a90f09bc84f235a3f05ba'),
    f1: 'testuser1',
    name: '1test1'
  },
  {
    _id: ObjectId('657a90f09bc84f235a3f05bb'),
    f1: 'testuser2',
    name: '2test2'
  }
]

tpcc> db.testCol.find({'f1':'testuser1'})
[
  {
    _id: ObjectId('657a90f09bc84f235a3f05ba'),
    f1: 'testuser1',
    name: '1test1'
  }
]

데이터 갱신

데이터 갱신은 $set 연산자를 이용해서 조건이 앞에오고 두 번째 위치에 수정하려는 필드에 대한 내용이 $set 연산자와 함께 옵니다.

다음과 같이 갱신연산을 수행할 수 있습니다.

tpcc> db.testCol.find()
[
  { _id: ObjectId('657a8ea79bc84f235a3f05b9'), f1: '1', name: 'test' }
]
tpcc> db.testCol.updateOne({'f1':'1'},{$set:{name:'mytest'}})
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
tpcc> db.testCol.find()
[
  {
    _id: ObjectId('657a8ea79bc84f235a3f05b9'),
    f1: '1',
    name: 'mytest'
  }
]

몽고DB 컬렉션 삭제

다음의 명령을 통해서 myCollection을 삭제할 수 있습니다.

tpcc> db.myCollection.drop()
true

데이터베이스 삭제

데이터베이스를 삭제하려면 먼저 삭제하려는DB, 데이터베이스를 선택해야 합니다. 이를 위해 use 명령어를 사용합니다. 그런 다음 db.dropDatabase() 명령어를 사용하여 데이터베이스를 삭제합니다. 예를 들어, 'myDatabase’라는 이름의 데이터베이스를 삭제하려면 다음 명령어를 사용합니다

use myDatabase
db.dropDatabase()


이렇게 하면 ‘myDatabase’ 데이터베이스가 삭제됩니다. 아래에 실제 테스트 결과를 첨부합니다.

mytest> show dbs
admin    40.00 KiB
config  108.00 KiB
local    40.00 KiB
mytest    8.00 KiB
tpcc     18.25 MiB
mytest> db.dropDatabase()
{ ok: 1, dropped: 'mytest' }
mytest> show dbs
admin    40.00 KiB
config  108.00 KiB
local    40.00 KiB
tpcc     18.25 MiB
mytest>
facebook twitter kakaoTalk kakaostory naver band shareLink