Not Only SQL
RDMS처럼 고정된 스키마 및 JOIN 이 존재하지 않습니다.
brew tap mongodb/brew
brew install mongodb-community
brew services start mongodb-community
mongo
| RDBMS | MongoDB |
|---|---|
| Database | Database |
| Table | Collection |
| Tuple/Row | Document |
| Column | Key/Field |
| Table Join | Embedded Documents |
| PK | PK(_id) |
| Database Server&Client | |
| mysqld.. | mongod |
| mysql.. | mongo |
Document는 RDMS의 record 와 비슷한 개념으로, key-value pair 형식입니다.
{
"_id": ObjectId("5099803df3f4948bd2f98391"),
"key1": "value1",
"key2": { value2: "Y.J.", value22: "Jang" }
}
_id 는 12bytes의 hexadecimal 값으로, 각 document의 uniqueness를 제공합니다.
timestamp(4bytes) + machine id(3bytes)+ MongoDB 서버의 프로세스id(2bytes) +순차번호(3bytes)로 구성되어있습니다.
# db 생성
> use DATABASE_NAME
switched to db DATABASE_NAME
# 현재 사용 중인 db 확인
> db
DATABASE_NAME
# db list
> show dbs
local 0.000GB
DATABASE_NAME 0.000GB
# db delete
> db.dropDatabase();
{ "dropped" : "DATABASE_NAME", "ok" : 1 }
| Field | Type | Description |
|---|---|---|
| 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 생성
> db.createCollection("name", {
... capped: true,
... autoIndex: true,
... size: 6142800,
... max: 10000
... })
{ "ok" : 1 }
# Collection list
> show collections
name1
name2
#Collection 제거
> db.COLLECTION_NAME.drop()
true
# Document insert
> db.COLLECTION_NAME.insert({"key": "value", "key": "value"});
WriteResult({ "nInserted" : 1 })
# Document list
> db.COLLECTION_NAME.find()
{ "_id" : ObjectId("56c08f3a4d6b67aafdeb88a3"),"key": "value", "key": "value"}
{ "_id" : ObjectId("56c08f474d6b67aafdeb88a4"), "key": "value", "key": "value"}
# Document delete
> db.COLLECTION_NAME.remove(criteria, justOne)
WriteResult({ "nRemoved" : 1 })