본문 바로가기

BigData/MongoDB4

MongoDB Having 쿼리 적용하기 http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/ 위 페이지에서 RDBMS에서 사용하는 SQL과 Mongo Query에 대해서 비교해주고 있다. 그 중 having 절을 Mongo Query로 어떻게 생성할까? 방법만 이야기 해보면 $match를 한 번 더 하면 된다. 예를 들면 고객별 날짜별 구입가격 합을 구하는 SQL이 아래와 같이 있다고 하자. SELECT cust_id, ord_date, SUM(price) AS total FROM orders GROUP BY cust_id, ord_date 여기에 일별 총 구매가가 250 이상인 고객만 가져오고 싶다면 having 절을 사용한다. SELECT cust_id, ord_date.. 2015. 3. 5.
MongoDB Aggregation시 Document Size 오류 MongoDB aggregate 를 통해 데이터를 집계하다가 아래와 같은 오류를 접하게 되었습니다. { errmsg: \"exception: aggregation result exceeds maximum document size (16MB)\", code: 16389, ok: 0.0 }"} 원인은 MongoDB의 경우 Document기반의 NoSQL DB로 Document size가 16MB로 고정되어 있습니다.(기본적으로는 수정 불가, 단, GridFS 적용시 가능) aggregate 수행결과 또한 Document이기 때문에, 이 결과도 16MB를 초과할 수 없습니다. 위 오류는 결과가 16MB를 초과하여 발생한 것 입니다. 이를 해결하기 위해서 MongoDB 공식 사이트를 검색해보니, Aggregat.. 2015. 3. 5.
MongoDB paddingFactor 옵션 compact 시에 option을 추가할 수 있는데, paddingFactor라는 것이 있다. paddingFactor란 무엇일까? MongoDB 공식 가이드에는 아래와 같이 설명되어 있다. The amount of space added to the end of each document at insert time. The document padding provides a small amount of extra space on disk to allow a document to grow slightly without needing to move the document. mongod automatically calculates this padding factor 즉, document 저장시 실제 데이터 내용보.. 2015. 3. 5.
MongoDB 인덱스 관리 1. 인덱스 생성 & 삭제 db.emp.ensureIndex({ eno:1 }, { unique:true }); db.emp.dropIndex({ eno:1 }); 1 => ASC -1 => DESC 2. 인덱스 재구성 및 삭제 db.emp.dropIndexes(); db.emp.dropIndex({ eno:1 }); db.runCommand({dropIndexes:'em', index:{eno:1}}) db.emp.reIndex(); db.runCommand({reIndex:'emp'}); Index의 대소문자는 엄격히 구분됩니다. Document를 Update 할 때 해당 Index Key만 변경되지만, 변경되는 Document 크기가 기존 Extent 공간 크기보다 큰 경우에 더 큰 Extent 공.. 2015. 3. 5.