저는 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 |
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
[primary] mongodb_test> db.dropDatabase();
{ ok: 1, dropped: 'mongodb_test' }
collection 생성시에는 db.createCollection(name, [options]) 명령어를 사용하기
name은 생성하려는 컬렉션의 이름, option은 document타입으로 구성된 해당 컬렉션의 설정값
Collection의 옵션값
Option:
옵션 | ||
필드 | 타입 | 설명 |
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
db."Collection이름".drop()으로 Collection을 삭제할 수 있습니다.
[primary] test> show collections
books
[primary] test> db.books.drop()
true
[primary] test> show collections
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'
}
]
예시) 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 }
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'
}
]
db.books.find().pretty()
[
{
_id: ObjectId("63c6a802f27061300efaf839"),
name: 'NodeJS Guide',
author: 'Velopert'
},
{
_id: ObjectId("63c6a82af27061300efaf83b"),
name: 'Book2',
author: 'yongari2'
}
Import vs Export (0) | 2023.01.13 |
---|---|
MongoDB Document (0) | 2023.01.10 |
NoSQL(Not only SQL)이란? (2) | 2023.01.10 |