project에 표현식 활용하기
이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 강의 사이트와 유투브 채널을
오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
● 잔재미코딩 유투브 오픈
[구독해보기]
7. project에 표현식 활용하기¶
* 산술표현식 - $add [a1 [, a2, a3 ... an]] - $substract [a1, a2] - $multiply [a1 [, a2, a3 ... an]] - $divide [a1, a2] - $mod [a1, a2] * 날짜 표현식 - $year, $month, $week, $dayOfMonth, $dayOfWeek, $dayOfYear, $hour, $minute, $second * 문자열 표현식 - $substr - $concat
7.1. 산술표현식 예제 (add)¶
In [39]:
result = db.zip.aggregate([
{'$group' :
{
'_id' : '$state',
'max' : {'$max' : '$pop'},
'min' : {'$min' : '$pop'}
}
},
{'$project' :
{
'maxmin' : {'$add' : ['$max', '$min']}
}
}
])
for record in result:
print(record)
7.2. 날짜 표현식 예제 (year, month, day, hour, minutes, second, millisecond, dayOfYear, dayOfWeek, week)¶
In [43]:
#ISODate 라는 날짜 표현식으로 데이터 넣기
import datetime
db.test_db.insert_one(
{ 'item' : 'abc', 'price' : 10, 'quantity' : 2, 'date' : datetime.datetime.utcnow() }
)
Out[43]:
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [41]:
#ISODate 라는 날짜 표현식으로 데이터 넣기
specific_date = datetime.datetime.strptime("2017-09-13T10:53:53.000Z", "%Y-%m-%dT%H:%M:%S.000Z")
db.test_db.insert_one(
{ 'item' : 'abc', 'price' : 10, 'quantity' : 2, 'date' : specific_date }
)
Out[41]:
In [47]:
from pprint import pprint
In [48]:
# $project의 날짜 표현 operator 활용 예
result = db.test_db.aggregate([
{'$project' :
{
'_id' : 0,
'year' : { '$year': '$date' },
'month' : { '$month': '$date' },
'day' : { '$dayOfMonth': "$date" },
'hour' : { '$hour': "$date" },
'minutes' : { '$minute': "$date" },
'seconds' : { '$second': "$date" },
'milliseconds' : { '$millisecond': "$date" },
'dayOfYear' : { '$dayOfYear': "$date" },
'dayOfWeek' : { '$dayOfWeek': "$date" },
'week': { '$week': "$date" }
}
}
])
for record in result:
pprint(record)
7.3. 문자열 표현식 예제¶
In [49]:
# $project의 $concat operator 활용 예
db.test_db.insert_one(
{ 'firstname' : 'Dave', 'lastname' : 'Lee' }
)
result = db.test_db.aggregate([
{'$project' :
{
'_id' : 0,
'all_data' : { '$concat' : ['Full Name: ', '$firstname', ' ', '$lastname' ]}
}
}
])
for record in result:
pprint(record)
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
In [50]:
# $project의 $substr operator 활용 예
db.test_db.insert_one(
{ 'fullname' : 'Dave Lee' }
)
result = db.test_db.aggregate([
{'$project' :
{
'_id' : 0,
'first_name' : { '$substr' : ['$fullname', 0, 4 ]},
'last_name' : { '$substr' : ['$fullname', 5, 7 ]}
}
}
])
for record in result:
pprint(record)
- unwind
- https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/
- 배열의 각 필드를 개별적인 문서로 변환
In [52]:
from pprint import pprint
result = db.restaurant.find(limit=1)
for record in result:
pprint(record)
In [81]:
# 레스토랑 데이터 예제, grades의 각 원소를 개별적인 원소가 된 문서로 변경
result = db.restaurant.aggregate([
{'$unwind' : '$grades'},
{'$limit' : 5}
])
for record in result:
pprint(record)