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 })