aggregation 주요 명령 (group/match/sort/sum)
이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 강의 사이트와 유투브 채널을
오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
● 잔재미코딩 유투브 오픈
[구독해보기]
4. aggregation 주요 명령 (group/match/sort/sum)¶
$group (GROUP BY), $match (WHERE), $sort (ORDER BY), $sum (SUM)
4.1. group & sum¶
- SQL 구문과 비교하며 작성할 것
- 한번에 만들기 어려우면, 일단 SQL 구문으로 만든 후, 유사 변경 예를 보며 mongodb aggregate로 바꿀 것
- _id 필드는 mandatory, 하지만, 전체 doc에 대한 계산값이 필요할 때는 null 로 넣으면 됨
In [60]:
# SQL: SELECT COUNT(*) AS count FROM zip
# mongodb aggreate:
result = db.zip.aggregate([
{'$group' :
{
'_id' : 'null',
'count' : {'$sum' : 1}
}
}
])
for record in result:
print(record)
In [16]:
# SQL: SELECT SUM(pop) AS count FROM zip
# mongodb aggreate:
result = db.zip.aggregate([
{'$group' :
{
'_id' : 'null',
'total' : {'$sum' : '$pop'}
}
}
])
for record in result:
print(record)
In [17]:
# SQL: SELECT state, SUM(pop) FROM zip GROUP BY state
# mongodb aggreate:
result = db.zip.aggregate([
{'$group' :
{
'_id' : '$state',
'total_pop' : {'$sum' : '$pop'}
}
}
])
for record in result:
print(record)
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
이해하고 실습하기
city 로 그룹핑해서, pop 의 합계를 출력하는데, 5개만 출력해보자
city 로 그룹핑해서, pop 의 합계를 출력하는데, 5개만 출력해보자
In [18]:
result = db.zip.aggregate([
{'$group' :
{
'_id' : '$city',
'total_pop' : {'$sum' : '$pop'}
}
},
{ '$limit' : 5 }
])
for record in result:
print(record)
4.2. sort¶
- sort order는 1 또는 -1
In [20]:
# SQL: SELECT state, SUM(pop) FROM zip GROUP BY state ORDER BY SUM(pop)
# mongodb aggreate:
result = db.zip.aggregate([
{'$group' :
{
'_id' : '$state',
'total_pop' : {'$sum' : '$pop'}
}
},
{'$sort' :
{'total_pop': 1}
},
{'$limit' : 5},
{'$project' : { '_id' : 0 }}
])
for record in result:
print(record)
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
4.3. match¶
In [21]:
# SQL: SELECT * FROM zip WHERE pop >= 100000
# mongodb aggregate:
result = db.zip.aggregate([
{'$match' : {'pop' : {'$gte' : 100000} } },
{'$limit' : 5 }
])
for record in result:
print(record)
In [ ]:
# SQL: SELECT * FROM zip WHERE state = 'MA'
# mongodb aggregate:
result = db.zip.aggregate([
{'$match' : {'state' : 'MA'}}
])
for record in result:
print(record)
In [23]:
# SQL: SELECT COUNT(*) FROM zip WHERE state = 'MA'
# mongodb aggregate:
result = db.zip.aggregate([
{'$match' : {'state' : 'MA'}},
{'$group' : {'_id' : 'null', 'count' : {'$sum' : 1}}}
])
for record in result:
print(record)
이해하고 실습하기
state 로 그룹핑, state 가 MA 인 pop 의 합계를 출력하기
state 로 그룹핑, state 가 MA 인 pop 의 합계를 출력하기
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [33]:
result = db.zip.aggregate([
{ '$match' : { 'state' : 'MA'}},
{ '$group' : { '_id' : '$state',
'count' : { '$sum' : '$pop'}}
}
])
for record in result:
print(record)