✏️ Setting
- 스키마와 모델을 생성해 export 한 모듈을 import 해서 사용하는 것이 편리하다.
const Vacation = require('../../models/vacation')
✏️ 저장
📍 객체 생성
const vacation = new Vacation({
name: 'Hood River Day Trip',
slug: 'hood-river-day-trip',
...
})
📍 data 저장
- 생성한 객체에서 save 함수를 호출해면 된다.
vacation.save()
.then(save => console.log('save 성공 :', save))
.catch(err => throw new Error(err))
✏️ 조회
📍 모든 문서 조회
exec()
를 사용하면 프로미스 객체를 반환해준다.
- Spring WebFlux 의 Operation Chain 과 비슷한 개념으로,
체인 가능한 쿼리 객체를 의미한다.
- 만약
find()
까지만 호출할 경우 쿼리 객체만 반환하게 된다.
Vacation.find()
.then(vacation => console.log('All vacations :' vacation)
).catch(err => console.error('Error :', err)
📍 특정 문서 조회
Vacation.findOne({ name: 'jeju' })
.then(vacation => console.log('vacation :', vacation)
.catch(err => console.error('Error :', err)
✏️ 업데이트
- mongoDB 에서는
updateOne()
을 사용해 조회와 최신화를 동시에 진행할 수 있다.
- updateOne(filter, update, option)
- filter : 특정 도큐먼트를 조회하는 인자
- update : 조회한 도큐먼트의 필드값을 업데이트하는 인자
$push
는 필드가 배열 형식일 때 기존 배열에 새로운 값을 추가하는 기능이다.
- option : 업데이트 종작을 조절하는 인자 (upsert 를 사용할 수 있음)
- 대표적으로
{ upsert: true }
는 filter 에 해당하는 문서가 있으면 update 하고,
없다면 문서를 새로 생성하는 기능이다.
addVacationInSeasonListener: async (email, sku) => {
await VacationInSeasonListener.updateOne(
{ email },
{ $push: { skus: sku } },
{ upsert: true }
)
}
✏️ 삭제
- 삭제도 update 와 비슷한 방법으로 할 수 있다.
deleteOne(filter)
: 특정 문서 하나만 삭제
deleteMany(filter)
: 복수의 특정 문서 삭제