[mongoDB] mongoose 게시판 만들기 - query
반응형

안녕하세요 😉

유유자적한 개발자 유로띠 입니다 😀

 

 

이번 포스팅은

게시판 만들기에 필요한

간단한 mongoose 쿼리를 알아보도록 하겠습니다

👏👏👏👏👏👏

 

기본적인 Board Schema 정의 및 model은

이전에 작성한 포스팅을 참조해 주세요

mongoose 자동 증가(auto increment)

 

mongoose 자동 증가(auto increment)

안녕하세요.!! Lotts 입니다 😉 오늘은 기존 mysql에서 사용하는 auto increment를 mongoDB에서도 사용하려 합니다. 👏👏 첫째. npm을 이용하여 auto increment를 설치합니다. npm install mongoose-auto-increme..

msyu1207.tistory.com

기존에 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 참조

https://github.com/alstjs1207/nodeBoardRepository/blob/nodeImageBoard_V1.5/nodeImageBoard/routes/board.js

 

alstjs1207/nodeBoardRepository

Contribute to alstjs1207/nodeBoardRepository development by creating an account on GitHub.

github.com

 

반응형