Dev_Henry

MongoDB 간단하게 알아보기 본문

기타 개발

MongoDB 간단하게 알아보기

데브헨리 2023. 7. 21. 15:59
728x90

 

프로젝트에서 채팅기능을 구현하던 중 채팅내용을 어떤식으로 저장할지 고민을 하다 기존에 사용하던 RDB에 채팅내용을 저장하기에는 너무 무겁고 오래걸릴것 같아서 nosql을 사용하는 방법을 알아보려고한다.

 

MongoDB는 대표적인 nosql중 하나로 기존 사용하던 관계형 DB와는 달리 비관계형으로 융통성있는 데이터 모델을 사용한다. 관계형 디비보다 가볍고 빠르게 사용할 수 있기때문에 채팅내용을 저장하기 좋다고 판단했다.

 

 

설치

https://www.mongodb.com/try/download/enterprise

 

Try MongoDB Enterprise Advanced

Try MongoDB Enterprise Advanced on premise non-relational database including the Enterprise Server, Ops Manager, and Enterprise Kubernetes Operator!

www.mongodb.com

 

 

 

complete : 기본경로 설치

custom: 커스텀경로 설치


  • 도큐먼트

rdb에서 하나의 데이터를 튜플로 저장한다면 MongoDB에서는 키와 값으로 이루어진 도큐먼트 형태로 저장한다.

{
    "key1":"value1",
    "k2":"v2"
}
 
### 해당 컬렉션의 도큐먼트 목록을 출력한다.
> db.컬렉션명.count()
> db.컬렉션명.find()

### 해당 컬렉션의 도큐먼트 목록을 보기 예쁘게 출력한다.
> db.컬렉션명.find().pretty()

### 컬렉션 생성
> db.createCollection("컬렉션명")
 

맵,해시,딕셔너리 등의 자료구조로 표현할 수 있으며, 주의사항으로는 데이터형과 대소문자를 모두 구별한다.

 

  • 컬렉션

reb의 테이블에 대응하는 역할로 도큐먼트의 모음이다.

### 현재 데이터베이스에 저장된 컬렉션 목록을 출력한다.
> show tables
> show collections
 

 

  • 데이터베이스

MongoDB에서 가장 큰 데이터 단위로, 컬렉션들을 그룹지어 구분하며 각 데이터베이스를 독릭적으로 취급한다.

### 현재 존재하는 데이터베이스 목록을 출력한다.
> show dbs

### 현재 사용 중인 데이터베이스를 출력한다.
> db

### 사용할 데이터베이스를 선택한다.
### 존재하지 않는 데이터베이스일 경우 새로 생성한다.
> use db명
 

##insert
> db.컬렉션.insertOne({json형식})
> db.컬렉션.insertMany([{json}])

## find
> db.컬렉션.find()
## 원하는 데이터 조건 (and조건일때 ,로 구분하여 나열)
> db.컬렉션.find({키:값,...})
## or조건
> db.컬렉션.find({$or:[{키:값},...{}]})
## 비교 $eq(=), $gt(>), $gte(>=), $in(포함), $nin(불포함), $lt(<), $lte(<=), $ne(!=), /문자열/(문자열포함), /^문자열/(문자열 시작)
> db.컬렉션.find({키:{$gt:25}})
## 일부 key값만 find (_id를 제외하고싶으면 _id:0 추가)
> db.컬렉션.find({},{"키값":1})

## update $set(값 변경), $inc(값 증감)
> db.컬렉션.updateOne({k:v},{$set:{k:v}})
> db.컬렉션.updateMany({k:v},{$set:{k:v}})

## delete
> db.컬렉션.deleteOne({k:v})
> db.컬렉션.deleteMany({k:v})
 

 

 

728x90
반응형