MongoDB

DataBase/MongoDB

[Mongodb] explain을 활용한 mongodb 쿼리 최적화

MongoDB, 대용량 데이터를 처리하고 저장하는 데 있어서 매우 효과적인 NoSQL 데이터베이스라는 사실은 이미 잘 알려져 있다. 하지만 대량의 데이터를 다루다 보면 쿼리의 효율성은 중요한 이슈가 된다. 그래서 MongoDB는 사용자들이 쿼리 성능을 향상시킬 수 있도록 explain() 메소드를 제공한다. 나의 경우 쿼리가 인덱스를 타는지 여부를 확인하기 위해 사용했다. explain() 메소드는 MongoDB 쿼리가 어떻게 동작하며 어떻게 최적화될 수 있는지에 대한 정보를 제공한다. 이 메소드의 사용법은 간단하다. 작성한 쿼리에 .explain()을 추가하면 된다. db.getCollection("test").find({test: "Test"}).explain() MongoDB는 .explain()에..

DataBase/MongoDB

[Mongoose] mongoose를 사용한 mongodb 필드를 삭제하는 방법

mongoose를 사용해서 마이그레이션 스크립트를 작성하던중 더이상 사용하지 않는 필드를 완전히 DB에서 삭제해야 하는 상황이 생겼다. 해당 필드를 DB에서 제거해보자. Version node.js: 16.15.1 mongoose: 6.6.2 mongoDB: 5.x Field 삭제 예를 들어 기존에 존재하던 스키마는 아래와 같은 형식이였다. const testSchema = new Schema({ test1: { type: String, required: true }, test2: { type: String, required: true }, test3: { type: String, required: true }, test4: { type: String, required: true }, test5: { t..

DataBase/MongoDB

[Error] MongoServerError: ns not found

몽고디비에서 테스트 DB에 있는 컬렉션을 삭제하는 도중 MongoServerError: ns not found 라는 에러가 발생했다. 해당 에러에 대한 원인과 해결방법을 알아보자. MongoServerError: ns not found 위와 같은 에러는 존재하지 않는 컬렉션에 대해서 작업을 수행할 때 발생한다. 테스트 코드상에서 이미 삭제한 컬렉션을 다시 한번 삭제하려고 해서 발생한 문제로 확인되었다. 하지만 삭제 뿐만아닌 기본적인 CRUD에 대해서도 존재하지 않는 컬렉션에서 작업을 수행할 때 발생한다. 해결방법은 간단하다. 해당 에러를 던진 코드 및 작업을 수행하기 위한 컬렉션을 생성해주면 된다.

Programming/Typescript

[Mongoose] mongoose를 typescript와 사용하는 방법

express에서 mongoose에 typescript를 적용하고 활용하는 방법에 대해서 서술한다. 크게 Schema 생성 방법, method 생성 방법, static 생성 방법 3가지를 알아보고 결과를 확인한다. 환경 mongoose: 6.x typescript: 4.5.4 node.js: 16.x mongoose에 typescript 적용 스키마 생성 static과 method를 사용하지 않는 mongoose의 Schema는 간단하게 정의할 수 있다. 1. 스키마에 들어갈 타입을 정의한다. interface DBUser { name: string; email: string; gender: boolean; } 2. 새로운 스키마를 생성하고 제네릭에 타입을 넣어준다. (이렇게 하면 스키마 정의시 타입을 ..

얼은펭귄
'MongoDB' 태그의 글 목록