- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
NoSQL [MongoDB] mongo java driver 에서 aggregate 사용하기
2020.12.06 20:50
[MongoDB] mongo java driver 에서 aggregate 사용하기
아래와 같은 데이터가 있다고 하자.
데이터베이스 이름은 dataset 이고 컬렉션의 이름은 data 이다.
|
mongos> db.data.find() { "_id" : 1, "from" : 998, "to" : 807 } { "_id" : 2, "from" : 269, "to" : 209 } { "_id" : 3, "from" : 78, "to" : 105 } { "_id" : 4, "from" : 1, "to" : 824 } { "_id" : 5, "from" : 785, "to" : 244 } { "_id" : 6, "from" : 145, "to" : 971 } { "_id" : 7, "from" : 597, "to" : 644 } { "_id" : 8, "from" : 33, "to" : 82 } { "_id" : 9, "from" : 257, "to" : 900 } { "_id" : 10, "from" : 281, "to" : 38 } { "_id" : 11, "from" : 448, "to" : 24 } { "_id" : 12, "from" : 625, "to" : 302 } { "_id" : 13, "from" : 132, "to" : 170 } { "_id" : 14, "from" : 67, "to" : 120 } { "_id" : 15, "from" : 323, "to" : 145 } { "_id" : 16, "from" : 800, "to" : 773 } { "_id" : 17, "from" : 395, "to" : 524 } { "_id" : 18, "from" : 1, "to" : 621 } ..... |
여기서 우리는 from 을 그룹으로 묶은 후 to의 합을 구하고 싶다.
아래처럼 mongo aggregate query 를 사용하여 구할 수 있다.
|
db.data.aggregate([{ $group: { _id:"$from", sum: {$sum:"$to"} }}]) |

그럼 자바 코드에서는 어떻게 사용할 수 있을까?
아래 명령어처럼 사용하면 된다.
|
|
위에 [MongoDB IP Address]에 적절한 ip 값만 넣어주면 MongoDB 에 접속해서 dataset.data 에 접근하게 되고
coll.aggregate 메소드로 aggregate 쿼리를 보내게 된다.
응답은 AggregateIterable<Document> 형식으로 받아지고, 그것을 파싱해서 프린트하면 된다.
실행 결과 화면

다른 예를 들어보자.
from 의 unique 한 아이템들의 개수를 구하고 싶다고 하자.
아래처럼 Set 에 넣고 size 를 구하면 된다.
|
db.data.aggregate([{ $group: { _id: null, count: { "$addToSet": "$from" } } }, { $project: { "size": { $size: "$count" } } }]) |

자바 프로그래밍을 할 때는 아래처럼 하면 된다.
|
AggregateIterable<Document> output = coll .aggregate( Arrays.asList( new Document("$group", new Document("_id", "null").append("fromCount", new Document("$addToSet", "$from"))), new Document("$project", new Document("size", new Document("$size", "$fromCount"))))); for (Document dbObject : output) { System.out.println(" size : " + dbObject.get("size")); } |
[출처] https://eyeballs.tistory.com/43?category=746952
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86098 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 78617 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95332 |

