728x90
반응형
MSSQL - Auto Increment
MSSQL에서는 테이블 생성 시, ID사양 증가값 설정으로 Auto Incremet 처리가 가능하다.
MongoDB - Auto Increment
MongoDB에서는 어떻게 처리해야 할까. MongoDB는 SQL Database같은 auto-increment를 제공하지 않는다.
MongoDB에서는 보통 아래와 같은 임의의 _id값이 생성된다.
"_id": "5eec6b9c206506b18a51b426"
하지만, 1,2,3,4.... 로 자동증가하는 _id값이 필요하다면, counters collection을 활용하여 함수로 얻을 수 있도록 프로그래밍해야한다.
Create counter collection for sequence
Sequence값을 관리하기 위한 Collection을 따로 생성한다.
이름은 counters로 했다~ 뭐, 각자 좋을대로~
그리고 아래와 같이, 관리하고 싶은 sequence명칭과, 0값을 insert 한다.
db.counters.insert({ _id: "noticeId", seq: 0 })
Create function to generate auto-increment sequence
그리고 다음과 같이, NextSequence를 가져올 수 있는 함수를 추가한다.
getNextSequence: async (name) => {
let getCountersConn = await _mongo.getConn('catalog', 'sales', 'counters');
var ret = await getCountersConn.findOneAndUpdate(
{ _id: name },
{
$inc: {
seq: 1
}
},
{ returnOriginal: false }
);
return ret.value.seq;
},
$inc는 보통 시퀸스 값 증가에 사용하는 제한자이고, returnOriginal:false로 하면 업데이트 된 데이터를 return 받는다.
그리고 아래와 같이 게시판데이터를 insertOne할떄 await mongo.getNextSequence('noticeId')를 호출하면,
1 증가된 noticeId의 sequence값을 가져올 수 있게 된다.
let insertResult = await notice.insertOne({
_id: await mongo.getNextSequence('noticeId'),
title: req.title,
desc: req.desc,
date: moment().format()
})
728x90
반응형
'React' 카테고리의 다른 글
React 게시판 만들기 : 파일업로드 multer (5) (0) | 2020.10.05 |
---|---|
React 게시판 만들기 : React-Quill (4) (0) | 2020.09.29 |
React 게시판 만들기 : Pagination (3) (0) | 2020.09.28 |
React 게시판 만들기 : 리스트 (2) (2) | 2020.09.28 |
React 게시판 만들기 : 준비과정 (1) (0) | 2020.09.28 |
댓글