aggregation 주요 명령 (project/limit)

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 사이트와, 다음 두 채널도 오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
●  잔재미코딩 뉴스레터 오픈 [구독해보기]
●  잔재미코딩 유투브 오픈 [구독해보기]

3. aggregation 주요 명령 (project/limit)

  • _id, city 만 출력하되 5개만 가져오기 ($limit 과 함께 이해하기)
In [10]:
# find 로 5개만 가져오면서 컬럼을 확인해보고 시작합니다.
result = db.zip.find(limit=5)
for record in result:
    print(record)
{'_id': '01001', 'city': 'AGAWAM', 'loc': [-72.622739, 42.070206], 'pop': 15338, 'state': 'MA'}
{'_id': '01002', 'city': 'CUSHMAN', 'loc': [-72.51565, 42.377017], 'pop': 36963, 'state': 'MA'}
{'_id': '01005', 'city': 'BARRE', 'loc': [-72.108354, 42.409698], 'pop': 4546, 'state': 'MA'}
{'_id': '01007', 'city': 'BELCHERTOWN', 'loc': [-72.410953, 42.275103], 'pop': 10579, 'state': 'MA'}
{'_id': '01008', 'city': 'BLANDFORD', 'loc': [-72.936114, 42.182949], 'pop': 1240, 'state': 'MA'}

3.1. project

In [9]:
# _id, city 만 출력하기
result = db.zip.aggregate([
    {'$project' : {'_id' : 1, 'city' : 1} },
    {'$limit' : 5 }
])
for record in result:
    print(record)
{'_id': '01001', 'city': 'AGAWAM'}
{'_id': '01002', 'city': 'CUSHMAN'}
{'_id': '01005', 'city': 'BARRE'}
{'_id': '01007', 'city': 'BELCHERTOWN'}
{'_id': '01008', 'city': 'BLANDFORD'}

각 명령별로 데이터가 처리되고, 이는 다른 명령에 파이프라인으로 데이터가 넘어간다고 생각하자!

{'$project' : {'_id' : 1, 'city' : 1} } --> {'_id': '01001', 'city': 'AGAWAM'} 수백개
{'$limit' : 5 } --> 이 중에 5개
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
이해하고 실습하기
state 와 pop 만 3개 출력하기
In [13]:
result = db.zip.aggregate([
    {'$project' : { 'state' : 1, 'pop' : 1, '_id' : 0 } },
    {'$limit' : 3 }
])
for record in result:
    print(record)
{'pop': 15338, 'state': 'MA'}
{'pop': 36963, 'state': 'MA'}
{'pop': 4546, 'state': 'MA'}
In [13]:
# _id, city 만 출력하기
result = db.zip.aggregate([
    
    
    {'$project' : {'state' : 1, 'pop' : 1, '_id': 0} },
    
    
    {'$limit' : 3 }
    
    
    
])
for record in result:
    print(record)
{'pop': 15338, 'state': 'MA'}
{'pop': 36963, 'state': 'MA'}
{'pop': 4546, 'state': 'MA'}

3.2. limit

In [14]:
# 전체 출력하려면 $project를 안쓰면 됩니다.
result = db.zip.aggregate([
    {'$limit' : 5 }
])
for record in result:
    print(record)
{'_id': '01001', 'city': 'AGAWAM', 'loc': [-72.622739, 42.070206], 'pop': 15338, 'state': 'MA'}
{'_id': '01002', 'city': 'CUSHMAN', 'loc': [-72.51565, 42.377017], 'pop': 36963, 'state': 'MA'}
{'_id': '01005', 'city': 'BARRE', 'loc': [-72.108354, 42.409698], 'pop': 4546, 'state': 'MA'}
{'_id': '01007', 'city': 'BELCHERTOWN', 'loc': [-72.410953, 42.275103], 'pop': 10579, 'state': 'MA'}
{'_id': '01008', 'city': 'BLANDFORD', 'loc': [-72.936114, 42.182949], 'pop': 1240, 'state': 'MA'}