SQL/NoSQL

[MongoDB] Database, Collection, Document 개념, 예제

dddzr 2023. 9. 6. 16:36

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