본문 바로가기
728x90
반응형

MongoDB13

백엔드에서 페이지네이션 하는 방법 2가지 MongoDB or JavaScript 페이지네이션 페이지네이션은 데이터를 컨트롤 방식이 아닌 버튼 형식으로 보여주는 방식을 말한다. 방대한 데이터를 다룬다면 끝없이 내려가는 컨트롤 방식보다는 버튼 형식이 더 낫다고 생각한다. 백엔드 개발자이기 때문에 프론트가 아닌 백엔드에서 데이터 전달 시에 어떻게 페이지네이션 할 수 있는지 알아보도록 하자. 1. MongoDB 메소드 사용하기 가장 간단하면서, 자주 사용하는 방식이 아닐까 생각한다. const page = Number(req.query.page || 1); // 현재페이지 const perPage = Number(req.query.perPage || 10); // 페이지 당 게시글 수 const total = await Post.countDocument({}); // MongoDB 함수 사.. 2023. 2. 10.
[MongoDB] 오늘 작성한 글만 나오게 하기 $regex 쓰면 되지 않을까? '오늘 작성한 글만 나오게' 라는 조건을 생각하자마자 MongoDB의 $regex 쿼리가 생각났다. $regex는 MongoDB에서 정규식을 쓰게 해주는 쿼리이고, 정규식은 문자열에 포함된 문자 조합을 찾기 위해 사용되는 패턴이다. const todayDate = new Date(); const getFullYear = todayDate.getFullYear(); const getMonth = todayDate.getMonth(); const getDay = todayDate.getDay(); const findDate = getFullYear + "-" + getMonth + "-" + getDay; const allBusinessData = await Bussiness.. 2023. 2. 8.
[MongoDB] 대량의 데이터 처리 프로그래밍 모델 (1) 맵리듀스 map-reduce 맵리듀스(map-reduce)란 맵리듀스는 많은 컴퓨터에서 대량의 데이터를 처리하기 위한 프로그래밍 모델로, 구글에 의해 널리 알려졌다. 몽고DB와 카우치 DB를 포함한 일부 NoSQL 데이터 저장소는 제한된 형태의 맵리듀스를 지원한다. 이 매커니즘은 많은 문서를 대상으로 읽기 전용 질의를 수행할 때 사용한다. '데이터 중심 애플리케이션 설계'을 읽던 위와 같은 구절을 만났다. MongoDB를 개발하는 내내 쓰면서 아직도 내가 모르는 기능이 있다는게 신기하다. 맵리듀스는 여러 함수형 프로그래밍 언어에 있는 map과 reduce 함수를 기반으로 한다. map() 함수는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다. reduce() 함수는 배열의 각 요소에 대.. 2022. 11. 8.
TypeScript + NodeJS(express) + MongoDB 조합으로 API 서버 만들때 주의할 점 들어서며 NodeJS를 쓰는 개발자들은 처음엔 유연한 JavaScript로 시작했다가 어느순간 TypeScript으로 넘어가게 되고 고마움을 느낍니다. 저도 개발을 하면 할수록 TypeScript의 필요성을 느끼고 있고 잘 이용할려고 합니다. 하지만 TypeScript로 API 서버를 만들면서 의아했던 부분들이 있었습니다. 의문 1. 상황 req.body로 클라이언트로부터 서버로 데이터를 전달 받았을 때 type 오류가 발생하지 않습니다. 제가 생각했을 때 아래 두가지 상황에서 분명 오류가 발생하고 데이터가 저장되지 않아야 하는데 그렇지 않았습니다. 2-1. Interface에 정의한 요소가 아님에도 오류가 발생하지 않는다. // interface.ts export interface UserInterfa.. 2022. 9. 28.
[MongoDB] Robo3T Failed to load documents 해결 방법 - Studio 3T 설치 그동안 잘 Robo3T를 사용하였는데 오늘부터 위와 같은 오류들이 생기기 시작했다. 알아보니 Robo3T v1.4의 문제 중 하나였다. 해결 방법은 v1.4.2을 다운로드 받는 것인데 알고보니 Robo3T는 개발 작업을 중단했으며 지원 중지되어 다운로드 받을 수 없다. 공식문서를 찾아보니 Robo3T 대신 Studio 3T를 다운로드 받는 것은 권장하고 있다. 다운로드하는 방법은 아주 간단하다. https://robomongo.org/ Robo 3T | Free, open-source MongoDB GUI (formerly Robomongo) Read by Dmitry Schetnikovich robomongo.org 위 링크를 클릭한 후 Download Studio 3T Free Today를 눌러주면 .. 2022. 8. 30.
[NodeJS] 검색기능 만들기 (1) MongoDB Query 규모가 크지 않은 서비스라면 굳이 검색엔진을 구축할 필요는 없습니다. MongoDB Query를 가지고 간단한 검색기능을 알아보도록 하겠습니다. 1) Regex 아마 가장 많이 사용하는 방법이 정규식이라고 생각합니다. 정규식을 이용하면 쿼리 중에 문자열의 패턴을 검색 가능합니다. 정규식은 패턴을 일련의 문자와 일치시키는 일반화된 방법입니다. .find({ title: { $regex: "강아지" } }) 원하는 필드에 찾고자 하는 데이터를 $regex로 걸어줍니다. 그러면 title이라는 필드 안에 "강아지"라는 단어를 가진 데이터들을 모두 가지고 옵니다. 예를 들어, title이라는 데이터에 "강아지" 말고도 "강아지산책", "사료강아지" 등 강아지가 포함된 모든 데이터들이 검색됩니다. 부분 텍스트 검.. 2022. 8. 19.
[MongoDB] syncIndexes() 이용해서 변경한 index 자동 적용시키기 예를 들어, name과 category에 index를 적용시켜줬습니다. 하지만 category는 필요 없어져서 삭제시켜준 후 다시 서버를 돌린다고 하면 어떻게 될까요? 예상대로라면 name만 index 적용이 되어야 합니다. 예상과 달리 name, category 모두 index 적용이 되어있었습니다. 방법을 몰라 robo3T에 직접 들어가서 매번 Index를 삭제하고 다시 서버를 돌렸죠. 이 행위가 매우 귀찮고 mongoDB에서 알아서 Index 자동 적용시켜주면 안되나 생각했습니다. 그러던 중 syncIndexes의 존재를 알게 되었습니다 ❗️ 찾아보니 5.2.0 버전 이전에는 mongoose에서 지원을 해주지 않았다고 합니다. 하지만 5.2.0 이후부터는 synclndexes()를 프로덕션 데이터베.. 2022. 7. 28.
[MongoDB] Transaction 트랜잭션 개념부터 실습까지 (3) - NodeJS에 사용하기 1편 Transaction 트랜잭션 개념부터 실습까지 https://bcoding-lab.tistory.com/293?category=868268 [MongoDB] Transaction 트랜잭션 개념부터 실습까지 (1) - Transaction numbers are only allowed on a replica set member Transaction이란 예를 들어, 위 그림과 같이 4개의 데이터를 지운다고 과정을 하도록 하겠습니다. 순차적으로 작업을 하던 중 C에서 에러로 인해 데이터 삭제가 불가능한 상태가 되었습니다. C,D는 bcoding-lab.tistory.com 2편 Transaction 트랜잭션 개념부터 실습까지 https://bcoding-lab.tistory.com/298?category.. 2022. 7. 13.
[MongoDB] Transaction 트랜잭션 개념부터 실습까지 (2) - 로컬에서 Replica Set 구성하기 https://bcoding-lab.tistory.com/293?category=868268 [MongoDB] Transaction 트랜잭션 개념부터 실습까지 (1) - Transaction numbers are only allowed on a replica set member Transaction이란 예를 들어, 위 그림과 같이 4개의 데이터를 지운다고 과정을 하도록 하겠습니다. 순차적으로 작업을 하던 중 C에서 에러로 인해 데이터 삭제가 불가능한 상태가 되었습니다. C,D는 bcoding-lab.tistory.com 지난 1편에서 트랜잭션을 하기 위해서는 Replica Set 환경 구성이 필수라는 것을 알았다. 무려 이틀에 걸쳐 Replica Set을 구성하였는데, 정말 에러란 에러는 다 만난 것 같.. 2022. 7. 12.
728x90
반응형