반응형
안녕하세요 😉
유유자적한 개발자 유로띠 입니다 😀
이번 포스팅은
게시판 만들기에 필요한
간단한 mongoose 쿼리를 알아보도록 하겠습니다
👏👏👏👏👏👏
기본적인 Board Schema 정의 및 model은
이전에 작성한 포스팅을 참조해 주세요
mongoose 자동 증가(auto increment)
기존에 RDBMS를 이용하여 만든 게시판 쿼리를
NoSQL인 MongoDB로 변경하면서
각각의 쿼리가 어떻게 변환되는지 알아보겠습니다 😉
✅ 게시판 전체 건수 조회
SELECT count(*) as count FROM BOARD
Board.count({},function(err, count){});
✅ 게시판 목록 조회
moddate로 내림차순 정렬, startPage부터 15개의 게시판 정보 가져오기
SELECT * FROM BOARD ORDER BY moddate DESC limit startPage,15
Board.find({}).sort({'moddate':-1}).skip(startPage).limit(15).exec(function(err, boardList){});
해당 쿼리는 게시판 정보를 불러올 때 변경 날짜를 내림차순으로 불러오면서 페이징 처리를 위해 현재 페이지(startPage)에서 15개의 게시글만 가져오는 쿼리 입니다 😊
💡 sort
sort({'moddate': -1}) : 수정날짜 내림차순 정렬
sort({'moddate': 1}) : 수정날짜 오름차순 정렬
💡 skip
skip(15): 15개를 건너뛰기
💡 limit
limit(15) : 15개의 개수 제한
💡 Example
skip(15).limit(15) : 16 ~ 30번째 게시글 조회
skip(30).limit(15) : 31 ~ 45번째 게시글 조회
skip(45).limit(15) : 46 ~ 60번째 게시글 조회
✅ 이미지 목록 중 대표 이미지 정보 조회
SELECT * FROM IMAGE WHERE repyn = 'Y'
Image.find({ repyn: 'Y'}).exec(function(err, repImageList){}):
✅ 게시글 조회
게시글의 고유값인 seq와 작성자 정보인 id를 이용하여 조회
Board.find({seq: seq, userid: id}).exec(function(err, boardView){});
✅ 게시글 등록
//인스턴스 생성
var newBoard = new Board({
"boardcd": boardcd,
"title": body.title,
"contents": body.contents,
"userid": body.userid,
"regdate": moment().format("YYYY-MM-DD HH:mm:ss"),
"moddate": moment().format("YYYY-MM-DD HH:mm:ss"),
"viewcnt":"1"
});
newBoard.save(function(err){});
✅ 게시글 조회수 업데이트
UPDATE BOARD set viewcnt = ? where boardcd = ?
Board.updateOne({ boardcd: boardView.boardcd }, { $set: { viewcnt: cnt } }, function (err, result) {});
이외에도 많은 쿼리가 있지만
여기서는 가볍게 확인하고 지나가겠습니다 😊
💡 유로띠의 Github 참조
반응형
'Programming > mongoDB' 카테고리의 다른 글
MongoDB에서 nGram 사용하기(fts, search index) (0) | 2023.07.08 |
---|---|
mac에서 mongodb 설치하기(feat. xcode error) (0) | 2023.05.05 |
mongoose 자동 증가(auto increment) (1) | 2019.10.16 |
node.js - mongoDB 연동 (0) | 2019.10.15 |
mongoDB 설치 (0) | 2019.10.15 |