Database, Collection 및 Document는 NoSQL 데이터베이스에서 일반적으로 사용되는 개념이며,
이러한 개념은 관계형 데이터베이스 시스템에서 테이블, 행 및 열과 유사한 역할을 합니다.
Database (데이터베이스)
- 데이터베이스는 데이터의 논리적인 컨테이너입니다. 데이터베이스는 하나 이상의 컬렉션을 포함하며, 관련된 데이터를 논리적으로 그룹화합니다.
- 각 데이터베이스는 고유한 이름을 가지며, MongoDB에서는 이를 "DB"라는 명령어로 생성하고 선택합니다.
- 예를 들어, 여러 종류의 데이터를 저장하기 위해 "사용자", "제품" 및 "주문"과 같은 여러 데이터베이스를 만들 수 있습니다.
// 데이터베이스 생성
use mydatabase
// 현재 사용 중인 데이터베이스 확인
db
// 만든 데이터베이스 리스트 확인 (최소 한개의 document를 추가해야 보인다)
show dbs
Collection (컬렉션)
- 컬렉션은 MongoDB 데이터베이스 내의 도큐먼트들의 그룹입니다. 컬렉션은 관련된 데이터를 저장하는 데 사용되며, 컬렉션 내의 각 도큐먼트는 유사한 구조를 가집니다.
- 각 컬렉션은 고유한 이름을 가지며, 동일한 데이터베이스 내에서 다양한 컬렉션을 생성할 수 있습니다.
- 예를 들어, "사용자" 데이터베이스에 "사용자 정보"를 저장하기 위한 "사용자 컬렉션"을 만들 수 있습니다.
// 컬렉션 생성(document 추가 시 자동 생성되어 생략 가능하다)
db.createCollection("mycollection")
// 옵션과 함께 생성
// 100개 도큐먼트만 저장할 수 있는 고정 크기 컬렉션 생성
db.createCollection("mycollection", { capped: true, size: 1024 * 1024, max: 100 })
// 자동 인덱스 생성 비활성화
db.createCollection("mycollection", { autoIndexId: false })
// age 필드가 18 이상인 도큐먼트만 허용하는 유효성 검사 규칙 설정
db.createCollection("users", {
validator: {
$jsonSchema: {
bsonType: "object",
properties: {
age: {
bsonType: "int",
minimum: 18
}
}
}
}
})
// 현재 데이터베이스의 컬렉션 목록 확인
show collections
// 컬렉션 제거
db.mycollection.drop()
*db.createCollection() 옵션
Field | Type | 설명 |
capped | Boolean | true로 설정하면 고정 크기 컬렉션(capped collection)을 생성할 수 있습니다. 이 컬렉션은 최대 크기가 설정된 후 데이터가 더 이상 쓰여질 수 없으며, 오래된 데이터가 최신 데이터로 대체됩니다. 이 값을 true로 설정하면 size 값을 꼭 설정해야합니다. |
autoIndex | Boolean | true로 설정하면, _id 필드에 index를 자동으로 생성합니다. 기본값은 false |
size | number | 해당 컬렉션의 최대 사이즈(maximum size)를 ~ bytes로 지정합니다. |
max | number | 해당 컬렉션에 추가 할 수 있는 최대 갯수를 설정합니다. |
storageEngine | object | MongoDB 컬렉션의 저장 엔진 설정을 지정합니다. 이 설정은 일반적으로 고급 사용자나 특정 요구 사항을 위한 것이며, 기본적으로 사용할 필요가 없습니다. |
validator |
BSON 객체 | 도큐먼트의 유효성 검사 규칙을 설정하는 데 사용됩니다. 도큐먼트가 지정된 스키마에 맞는지 검증할 수 있으며, 유효하지 않은 도큐먼트는 저장되지 않습니다. |
Document (도큐먼트)
- 도큐먼트는 NoSQL 데이터베이스에서 저장되는 데이터의 기본 단위입니다. 도큐먼트는 JSON 형식 또는 BSON(Binary JSON) 형식으로 저장됩니다.
- 각 도큐먼트는 고유한 필드와 해당 필드의 값을 가지며, 필드와 값의 쌍으로 구성됩니다.
- MongoDB에서는 각 컬렉션 내에 다양한 도큐먼트를 저장할 수 있으며, 각 도큐먼트는 서로 다른 구조를 가질 수 있습니다.
// 도큐먼트 삽입 (INSERT)
// 하나 삽입
db.mycollection.insertOne({
name: "Alice",
age: 30,
email: "alice@example.com"
})
// 여러개 삽입
db.mycollection.insert([
{
name: "Alice",
age: 30,
email: "alice@example.com"
},
{
name: "Tom",
age: 26,
email: "tom@example.com"
}])
// 도큐먼트 조회 (FIND)
db.mycollection.find({ name: "Alice" })
// 도큐먼트 업데이트 (UPDATE)
db.mycollection.updateOne({ name: "Alice" }, { $set: { age: 31 } })
// 도큐먼트 삭제 (DELETE)
// 필터와 일치하는 첫 번째 도큐먼트 삭제
db.mycollection.deleteOne({ name: "Alice" })
// 필터와 일치하는 모든 도큐먼트 삭제
db.mycollection.deleteMany({"name" : "Alice"})
//도큐먼트 삭제 (Remove) 3.2 버전 이전
// 모든 도큐먼트 삭제
db.mycollection.remove({})
// 필터와 일치하는 모든 도큐먼트 삭제
db.mycollection.remove({ name: "Alice" })
'SQL > NoSQL' 카테고리의 다른 글
[MongoDB] mongoDB compass사용법 (0) | 2023.09.06 |
---|---|
RDBMS NoSQL 비교 (CRUD 예시) (0) | 2023.09.06 |
[MongoDB] 설치 (Tool 사용법) (0) | 2023.09.05 |