1. aggregate 사용 예시
db.collection.aggregate(pipeline, options)
db.collection.explain().ageaggregate(pipeline, options)
몽고 DB의 aggregate는 위와 같은 양식으로 사용가능하며, explain을 통해 실행 계획을 확인할 수 있다.
{ "_id" : ObjectId("aaa"), "corp_code" : "1111", "shares" : 100, "price" : 100 }
{ "_id" : ObjectId("bbb"), "corp_code" : "1111", "shares" : 200, "price" : 200 }
{ "_id" : ObjectId("ccc"), "corp_code" : "2222", "shares" : 300, "price" : 300 }
{ "_id" : ObjectId("ddd"), "corp_code" : "2222", "shares" : 400, "price" : 400 }
db.Stock.aggregate([
{ $match: { corp_code: "1111" } },
{ $group: { _id: "$corp_code", total_shares: { $sum: "$shares" } } },
{ $sort: { total_shares: -1 } }
])
예시로 위와 같은 document가 있다고 가정 시, $match
에서 corp_code가 1111인 document를 찾고, $group
에서 shares를 total_shares로 합산 및 corp_code 필드 별로 그룹 후, $sort
에서 total_shares 필드 기준 내림차순으로 나타내게 된다.
{ "_id" : "1111", "totalShares" : 300 }
$match $group
이외에도 $limit $lookup
등 pipeline에 많은 단계들을 적용할 수 있다.
반응형
'Programming' 카테고리의 다른 글
[Kafka] 카프카 기본 동작 간단 정리 (0) | 2023.01.30 |
---|---|
[MongoDB] 커서(cursor) 및 간단 사용 예시 (0) | 2023.01.28 |
[MongoDB] 정렬 sort 사용 예시 (단일 및 여러 필드) (0) | 2023.01.28 |
[MongoDB] 컬렉션 생성 및 도큐먼트 추가 예시 (0) | 2023.01.28 |
[Spring Boot] Query dsl jpa 간단 사용 예시 (0) | 2023.01.23 |