본문 바로가기
2021-1/Expert

MongoDB | Aggregate Project Group by

by 이망고_ 2021. 12. 7.
db.Rawdata.aggregate( [  
    { $project:
    {_id : 1,
    ag : "$ldAgency"}},
    { $group: {
        _id : "$ag", count: {$sum : 1}}
    }
    ] )

몽고DB  해당 컬렉션의 쿼리서 작성

shell 단축키: ctrl + s 임다

쿼리 생성 단축키는 ctrl + s 

하면 shell 이 나옵니다

F5 로 수행됨!

쿼리를 짰으면 실행해줘야죠

F5로 실행이 가능함다

 

기존에 있던 쿼리는

db.Rawdata.aggregate( [ 
{ $match: { "keyId" : 519 } } , 
{ $project: { 

Startdate : {$dateFromString: { dateString: "$prdStart" }

} , 

Enddate : {$dateFromString: { dateString: "$prdEnd" }}

 } } , 
{ $group: {
_id: {$year: "$Enddate" }, 

 } }, 
{$sort: {_id:-1}}, ] )

였다. 여서 우리가 필요한 것은 project랑 group이었다. 

(고로, 매치, 솔트, 카운트 모두 필요없어 지웠음)

같은 그룹끼리 묶고 싶어서 그룹바이를 하는 것은 이해가 갔는데 프로젝트는 왜 쓰는지 잘 몰랐다

정의한 것을 보아도 reshape 이라고 되어 있어서 이해가 안감.. 직접 해보면서 이해하기로 했다

Aggregate 정리는 하고 가자.

 

한달전쯤에 한 aggregate 이지만 또 봐도 잘 몰랐다 혼자서 끙끙대다가 선배 한 분이 와서 뭐하고 잇냐고 해서 이해하고 있다고 하니, 옆에서 몽고db 매뉴얼 켜고 바로바로 대입해주었다 

 

선배팁

1. 이해보다 바로 한번 적용해보자

2. 띄어쓰기랑 탭, 형태를 맞추어주었다

https://docs.mongodb.com/manual/introduction/

 

 

Introduction to MongoDB — MongoDB Manual

Docs Home → MongoDB ManualWelcome to the MongoDB 5.0 Manual! MongoDB is a document database designed for ease of development and scaling. The Manual introduces key concepts in MongoDB, presents the query language, and provides operational and administrat

docs.mongodb.com

메모장도 활용쓰

MongoDB Aggregate를 파헤쳐보자

  • Aggregation(집계) : 집계 작업은 여러 문서를 처리하고 계산된 결과를 반환합니다.
    • 여러 문서의 값을 함께 그룹화 할 수 있다
    • 그룹화된 데이터에 대한 작업을 수행하여 단일 결과를 반환한다
    • 시간 경과에 따른 데이터 변경 사항을 분석한다 

Aggregation 을 사용하면 같은 이름이나 프로젝트에서 지정해둔 것을 그룹화 할 수 있는 것으로 보인다. 

내가 이해한 바로는, 프로젝트에서 정의를 내려주는 것 같다. 변수를 지정해줄 때에는 date를 str해줄 수 있는 함수도 있고, 변수명이 길면 짧은 변수명으로 해 줄 수도 있다. ( 변수명 : "$00" 형태를 사용해주면서) 

그렇게 변수를 정의해주면 그룹바이 할 때 그 변수를 사용해준다.

 

예시

db.orders.aggregate( [
{ $match: { status: "urgent" } },
{ $group: { _id: "$productName", sumQuantity: { $sum: "$quantity" } } }
] )

집계 파이프라인 예제에는 두 단계가 포함되어 있으며 각 제품에 대한 긴급 주문의 총수량을 반환한다.

  • $match 단계
    • 문서status를 "urgent" 로 필터링한다
    • 필터링된 문서를 $group 스테이지로 출력한다
  • $group 단계
    • 입력문서를 기준으로 productName으로 그룹화한다
    • 집계 파이프라인에서 반환된 필드에 저장되는 각각 $sum의 합계를 계산하는 데 사용한다. .quantity productName sumQuantity

그 외 예시

distinct를 사용해서 "cust_id" 만 추출했다

 

'2021-1 > Expert' 카테고리의 다른 글

MongoDB | Aggregate (집계함수)  (0) 2021.12.07
MongoDB | AGGREGATE $project $group 해석  (0) 2021.12.07
MongoDB | Group by  (0) 2021.12.06
Expert | Crawling Task  (0) 2021.12.06
MongoDB | csv 파일 insert 하기  (0) 2021.12.06