상세 컨텐츠

본문 제목

MongoDB Database, Collection, Document를 생성하고 제거해보자

Computer Science/NoSQL

by Yongari 2023. 1. 17. 23:01

본문

 

저는 RDBMS를 많이 사용했었는데요. 그래서 NoSQL에서의 도큐먼트와 콜렉션은 어떤 의미인지 RDBMS와 비교해봤습니다.

 

 

RDBMS MongoDB
Database Database
Table Collection
Tuple / Row Document
Column Key / Field
Table Join Embedded Documents
Primary Key Primary Key (_id)
Database Server & Client
mysqld mongod
mysql mongo

 

Database 생성 명령어 "use"

1. mongdb_test라는 데이터베이스를 "use"를 이용하여 생성하기

[primary] myFirstDatabase> use mongodb_test
switched to db mongodb_test

 

2. 현재 사용중인 데이터 베이스를 확인할 때는 "db"라는 명령어를 입력하기

[primary] mongodb_test> db
mongodb_test

 

3. 내가 만든 데이터베이스 리스트들을 확인할 때는 "show dbs" 명령어를 입력하기

[primary] mongodb_test> show dbs
sample_airbnb        52.77 MiB
sample_analytics      9.13 MiB
sample_geospatial     1.38 MiB
sample_guides        40.00 KiB
sample_mflix         52.25 MiB
sample_restaurants    7.20 MiB
sample_supplies       1.12 MiB
sample_training      52.71 MiB
sample_weatherdata    2.81 MiB
admin               280.00 KiB
local                 2.01 GiB


4. 그러나 방금 만든 mongodb_test가 안 보인다. 안 보이는 이유는 방금 만든 데이터베이스에 최소 한개의 document도 없기 때문이다. 그래서 임의로 한개의 Document를 넣어줘야한다.

"db.book.insert({ "키":"밸류", "키":"밸류"})

 

[primary] mongodb_test> db.book.insert({"name":"mongo db test", "author" : "yongari"});
DeprecationWarning: Collection.insert() is deprecated. Use insertOne, insertMany, or bulkWrite.
{
  acknowledged: true,
  insertedIds: { '0': ObjectId("63c6a319f27061300efaf838") }
}

 

그리고 다시 "show dbs"를 입력하면 다음과 같은 결과가 나온다.

 

show dbs
mongodb_test          8.00 KiB
sample_airbnb        52.77 MiB
sample_analytics      9.13 MiB
sample_geospatial     1.38 MiB
sample_guides        40.00 KiB
sample_mflix         52.25 MiB
sample_restaurants    7.20 MiB
sample_supplies       1.12 MiB
sample_training      52.71 MiB
sample_weatherdata    2.81 MiB
admin               280.00 KiB
local                 2.01 GiB

 

 

Database 제거 명령어 "db.dropDatabase()"

[primary] mongodb_test> db.dropDatabase();
{ ok: 1, dropped: 'mongodb_test' }

 

 

Database Collection 생성 명령어 "db.createCollection"

collection 생성시에는 db.createCollection(name, [options]) 명령어를 사용하기

name은 생성하려는 컬렉션의 이름, option은 document타입으로 구성된 해당 컬렉션의 설정값

 

Collection의 옵션값

Option: 

FieldType설명

 

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

 

Collection 생성 명령어 

 [primary] test> db.createCollection("books")
{ ok: 1 }

 

Collection 리스트를 보는 법 "show collections"

[primary] test> show collections
books

 

 

Database Collection 제거 명령어 "db.Collections.drop()"

db."Collection이름".drop()으로 Collection을 삭제할 수 있습니다.

[primary] test> show collections
books
[primary] test> db.books.drop()
true
[primary] test> show collections

 

 

Document 추가 명령어 "db.Collections.insert(document)"

insert() 메소드를 사용하여 Document를 추가할 수 있음

 

한개의 도큐먼트 추가하기

[primary] test> db.books.insert([
... {"name": "Book1", "author": "Velopert"},
...

 

두 개의 다큐먼트를 추가하기, 여러개도 다음과 같이 행을 추가해서 넣어주면 된다.

[primary] test> db.books.insert([
... {"name": "Book1", "author": "yongari1"},
... {"name": "Book2", "author": "yongari2"}
... ]);
{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("63c6a82af27061300efaf83a"),
    '1': ObjectId("63c6a82af27061300efaf83b")
  }
}

 

컬렉션에 있는 도큐먼트 리스트를 확인할 때는 db.Collection이름.find() 명령어 사용

SQL에서 SELECT * FROM 테이블과 비슷한 것 같다. 

db.books.find()
[
  {
    _id: ObjectId("63c6a802f27061300efaf839"),
    name: 'NodeJS Guide',
    author: 'Velopert'
  },
  {
    _id: ObjectId("63c6a82af27061300efaf83a"),
    name: 'Book1',
    author: 'yongari1'
  },
  {
    _id: ObjectId("63c6a82af27061300efaf83b"),
    name: 'Book2',
    author: 'yongari2'
  }
]

 

 

Document 제거 명령어 "db.Collections.remove(document)"

예시) books 컬렉션에서 "name"이 "Book1"인 도큐먼트를 제거

[primary] test> db.books.find({"name": "Book1"})
[
  {
    _id: ObjectId("63c6a82af27061300efaf83a"),
    name: 'Book1',
    author: 'yongari1'
  }
]
Atlas atlas-fsw2g7-shard-0 [primary] test> db.books.remove({"name":"Book1"});
DeprecationWarning: Collection.remove() is deprecated. Use deleteOne, deleteMany, findOneAndDelete, or bulkWrite.
{ acknowledged: true, deletedCount: 1 }

 

 

Document 콜렉션의 개수 세기 명령어 "db.Collections이름.find().count()"

db.books.find().count()
2
Atlas atlas-fsw2g7-shard-0 [primary] test> db.books.find()
[
  {
    _id: ObjectId("63c6a802f27061300efaf839"),
    name: 'NodeJS Guide',
    author: 'Velopert'
  },
  {
    _id: ObjectId("63c6a82af27061300efaf83b"),
    name: 'Book2',
    author: 'yongari2'
  }
]

 

Document 콜렉션을 좀 더 예쁘게 보는 법 "db.books.find().pretty()"

db.books.find().pretty()
[
  {
    _id: ObjectId("63c6a802f27061300efaf839"),
    name: 'NodeJS Guide',
    author: 'Velopert'
  },
  {
    _id: ObjectId("63c6a82af27061300efaf83b"),
    name: 'Book2',
    author: 'yongari2'
  }

 

'Computer Science > NoSQL' 카테고리의 다른 글

Import vs Export  (0) 2023.01.13
MongoDB Document  (0) 2023.01.10
NoSQL(Not only SQL)이란?  (2) 2023.01.10

관련글 더보기