db.Rawdata.aggregate( [
{ $project:
{_id : 1,
ag : "$ldAgency"}},
{ $group: {
_id : "$ag", count: {$sum : 1}}
}
] )
몽고DB 해당 컬렉션의 쿼리서 작성
쿼리 생성 단축키는 ctrl + s
하면 shell 이 나옵니다
쿼리를 짰으면 실행해줘야죠
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/
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
그 외 예시
'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 |