DataBase

    MongoDB에서 효율적으로 페이징 처리하기(pagination)

    MongoDB Pagination MongoDB에서 페이징을 처리하는 방법은 여러 가지가 있습니다. 효율적으로 처리하기 위해 했던 고민들을 공유합니다. 개발 환경 Node.js(Express) mongoDB(Mongoose) ❌ Skip, Limit 처음 적용했던 방식은 mongoDB의 skip과 limit 기능을 이용해서 데이터를 건너뛰고(skip), 한 페이지에 보여줘야 하는 수만큼 제한(skip)하는 것입니다. 현재 3 페이지고 한 페이지에 10개의 데이터를 보여준다면 21~30 번째 글을 보여주면 되므로 skip(20).limit(10) 가 됩니다. db.students.find().skip(20) // 10개를 건너뛰고 21개부터 조회 db.students.find().limit(10) // 1..

    [MongoDB]mongoose에서 가상 필드 조회안하기, Document를 Object로 변환하기

    mongoose에서 가상 필드를 사용하지 않고 조회하는 방법을 공유하려고 합니다. 더 좋은 방법이 있다면 댓글로 알려주시면 감사하겠습니다.🙏 가상 필드 조회 안 하기 아래처럼 가상 필드를 사용하고 있다고 했을 때 postSchema.virtual('totalComments').get(function (this: IPost) { return this.comments.length; }); find(). select()로 가상 필드에서 사용하는 필드를 제외시키면 에러가 발생하게 됩니다. "Cannot read properties of undefined (reading 'length')" find 끝에 lean()을 붙여주면 MongoDB Document가 아닌 Javascript Object(Plain Old..

    SQL, NoSQL 비교(특징, 스키마, 속도, 확장)

    사이드 프로젝트에서 어떤 Database를 사용할지 고민하면서 각 차이점에 대해 알아본 내용들을 정리해보려 합니다. 잘못된 내용이 있거나 도움이 되었다면 댓글 부탁드립니다. 🙏 먼저 요약✌️ 관계형 DB의 장점 = 비 관계형 DB의 단점, 비 관계형 DB의 장점 = 관계형 DB의 단점이라고 생각하면 된다. 모두 장단점이 있기 때문에 각 특성을 파악하고 상황에 맞는 DB를 선택해야 한다. 단순히 Node.js는 MongoDB가 좋다는 생각은 잘못됐다. NoSQL은 최대한 단순하면서 많은 데이터, RDBMS는 복잡하면서 무결성이 중요한 데이터에 용이하다. 즉 금융, 결제와 같이 데이터 간 관계가 복잡하거나 무결성이 중요하다? SQL 변경에 유연해야 하거나 데이터의 양이 많거나 샤딩이 필요하다면 NoSQL 장..