MongoDB 가 하나의 컬렉션안에 다양한 계층과 릴레이션 관계를 JSON 으로 구조화 할 수 있긴 하지만, 결국에는 collection 간에 데이터를 조인(JOIN) 해야 하는 니즈는 생기기 마련이다. aggregate
함수에서는 $lookup
기능을 이용하여 컬렉션간에 데이터를 JOIN 할 수 있다.
MongoDB aggregate 함수로 피벗테이블(pivot) 만들기
회원정보, 수납내역, 일정관리 등 간단한 사이트를 개발한 적이 있는데, MongoDB 를 사용하여 데이터를 관리하고 있다. 월별로 수납정보를 피벗테이블 형태로 바꾸어 보여줘야 할 일이 생겼다. MongoDB 의 aggregate
함수를 이용해서 구현할 수 있었는데, 생각보다 소스가 너무 길어져서 mongoDB 를 괜히 사용했나 싶은 생각까지 들었다. 그 힘들었던 과정을 스탭별로 정리하기로 했다.
MongoDB aggregate 함수로 group by 기능 사용하기
MongoDB의 집계(aggregate)는 데이터베이스 내에서 데이터를 질의하고 변환하는 도구이다. 특히 필터링, 그룹화, 정렬 및 데이터 변환과 같은 작업에 유용하다보니, MongoDB 를 잘 사용하기 위해서는 aggregate 함수가 필수이다. 모든 기능을 설명하지는 못했지만, 주로 쓰는 기능위주로 정리했다.
[더 읽기]Mongo Docker 이미지에 oh-my-zsh 설치
mongodb
는 항상 docker 이미지로 설치를 해서 사용하고 있다. 최근에 새로 svelte
프로젝트를 개발하면서 mongodb
도 필요해서 새로운 7버전 docker 이미지로 설치를 했는데, 애용하는 oh-my-zsh
설치가 정상적으로 안되는 문제가 있었다. 분명 Dockerfile
안에 설치스크립트를 넣었지만 이미지를 실행해 들어가보면 전혀 셋팅이 안되어 있는 현상이었다.
Svelte 에서 MongoDB 연결하기
Svelte
에서 MongoDB
연결하는 예시가 어디 딱 나와있지 않다. 그래서 여러 삽질을 통해 연결이 되었고 그 부분을 대략 정리해본다. 사실 javascript
에서 module 을 import 하고 export 하는 방법이 가장 난항이었다. 그 부분을 중점적으로 정리해본다.
Mongo 데이터베이스 만들기
MongoDB 데이터 일괄 업데이트 및 삭제방법
mongoDB atlas
를 이용해서 사이트를 운영중이다. 무료로 mongoDB 클라우드 서버를 사용할 수 있는데 아주 작은 사이즈의 데이터량을 사용하는 나한테는 충분한 용량과 성능이다. 아래 그림에서 각 티어별로 부과되는 금액과 스펙차이를 볼 수 있고, 무료인 M0
는 512MB의 용량을 제공한다. 최근에 mongoDB로 저장한 데이터중 일부 코드를 일괄 변경할 일이 생겨서, 방법 찾아보고 처리한 내용을 정리해본다.