문서는 한개이상의 키-값의 쌍으로 이루어져 있습니다.
{
"id":ObjectID("12349082387"),
"username":omnigi,
"name": {first:"D.Y", last:"KIM"}
}
문서는 BSON(바이너리 형태의 JSON) 형태로 저장됩니다.
새로운 문서를 만들면 _id라는 고윳값을 자동으로 생성하는데, 이 값은 시간, 머신아이디, 프로세스아이디, 순차번호로 되어 있어 값의 고유함을 보장합니다.
여러 문서가 들어 있는 곳을 컬렉션이라고 합니다. 기존 RDBMS에서는 테이블 개념을 사용했지만 MongoDB는 다른 스키마를 가지고 있는 문서들이 한 컬렉션에서 공존할 수 있습니다.
ex
{
"id":ObjectID("12349082387"),
"username":omnigi,
},
{
"id":ObjectID("123490823879"),
"username":omnigi2,
"phone":"010-1234-5678"
}
서버 하나에 데이터베이스를 여러개 가지고 있을 수 있고, 각 데이터 베이스에는 컬렉션이 존재하며,
컬렉션 내부에는 문서들이 들어 있습니다.
NoSql에서는 모든것을 문서 하나에 넣습니다.
{
_id:ObjectId,
title: String,
body: String,
username: String,
createdDate: Date,
comments: [
{
_id: ObjectId,
text: String,
createdDate: Date,
},
],
}
mongoDB 이런 상황에서 보통 MongoDb는 댓글을 포스트 문서 내부에 넣습니다. 문서 내부에 또 다른 문서가 위치할 수 있는데 이를 서브 다큐먼트라고 합니다.
서브다큐먼트 또한 일반 문서를 다루는 것처럼 쿼리할 수 있습니다.
문서하나에 16MB만큼 데이터를 넣을 수 있습니다