01.MongoDB 기초 - Pymongo 정리-1

ID짱재·2021년 2월 27일
0

MongoDB

목록 보기
6/8
post-thumbnail

🌈 Pymongo 문법 정리

🔥 컬럼명 변경 : '$rename'

🔥 정렬하여 출력하기 : sort()

🔥 해당 key 유무에 따른 document 출력 : '$exists'

🔥 필드값 범위로 출력 : 비교연산자 사용하기

🔥 필드값 범위로 출력 : 논리연산자 사용하기(and, or)


1. 컬럼명 변경 : '$rename'

  • "기존 컬럼명"을 "변경할 컬럼명"으로 변경
  • 수정은 update_one() 또는 updata_many() 을 사용

✍🏻 python

import pymongo 
# mongodb connection
conn = pymongo.MongoClient() # pymongo로 mongodb 연결(localhost:27017)
actor_db = conn.cine21 
actor_collection = actor_db.actor_collection
# 컬럼명 변경
actor_collection.update_many( {}, {'$rename': {'기존 컬럼명':'변경할 컬러명'}} )

2. 정렬하여 출력하기 : sort()

  • sort('기준컬럼', 옵션)을 통해 오름차순 및 내림차순 선택 가능
  • 오름차순 옵션 : pymongo.ASCENDING
    • 🔍 sort('생년월일', pymongo.ASCENDING) ⇢ 생년월일 낮은 사람부터(늙은)
    • 🔍 sort('생년월일') ⇢ 위와 같음(defalut가 오름차순임이기 때문에 생략하여 작성 가능)
    • 단, 오름차순은 "생년월일"이 없는 데이터(document)부터 우선순위를 가짐
  • 내림차순 옵션 : pymongo.DESCENDING
    • 🔍 sort('생년월일', pymongo.DESCENDING) ⇢ 생년월일 높은 사람부터(어린)

✍🏻 python

import pymongo 
# mongodb connection
conn = pymongo.MongoClient() # pymongo로 mongodb 연결(localhost:27017)
actor_db = conn.cine21 
actor_collection = actor_db.actor_collection
# sort 문법
docs = actor_collection.find({}).sort('생년월일', pymongo.DESCENDING).limit(10)
for doc in docs:
    print(doc)



3. 해당 key 유무에 따른 document 출력 : '$exists'

  • 🔍 find({ 'key이름' : { 'exists' : True }}) ⇢ key가 존재하는 것만 출력
  • 🔍 find({ 'key이름' : { 'exists' : False }}) ⇢ key가 존재하지 않는 것만 출력

✍🏻 python

import pymongo 
# mongodb connection
conn = pymongo.MongoClient() # pymongo로 mongodb 연결(localhost:27017)
actor_db = conn.cine21 
actor_collection = actor_db.actor_collection
docs = actor_collection.find( {"특기": { "$exists": True }} ).limit(5)
for doc in docs:
    print(doc)

  • ✔️ 특기가 있는 배우들 중에 흥행지수가 높은 사람부터 5명까지 출력
    ✍🏻 python
import pymongo 
# mongodb connection
conn = pymongo.MongoClient() # pymongo로 mongodb 연결(localhost:27017)
actor_db = conn.cine21 
actor_collection = actor_db.actor_collection
docs = actor_collection.find( {"특기": { "$exists": True }} ).sort('흥행지수', pymongo.DESCENDING).limit(5)
for doc in docs:
    print(doc)

  • ✔️ 특기가 없는 배우를 모두 찾은 뒤, 배우이름만 출력
    ✍🏻 python
import pymongo 
# mongodb connection
conn = pymongo.MongoClient() # pymongo로 mongodb 연결(localhost:27017)
actor_db = conn.cine21 
actor_collection = actor_db.actor_collection
docs = actor_collection.find( {"특기": { "$exists": False }}, {'배우이름':1, '_id':0} )
for doc in docs:
    print(doc)


4. 필드값 범위로 출력 : 비교연산자 사용하기

  • 흥행지수가 1000이상인 배우들을 찾아 배우이름과 흥행영화만 출력

✍🏻 python

import pymongo 
# mongodb connection
conn = pymongo.MongoClient() # pymongo로 mongodb 연결(localhost:27017)
actor_db = conn.cine21 
actor_collection = actor_db.actor_collection
docs = actor_collection.find( {"흥행지수": { "$gte": 10000 }}, {"배우이름":1,"출연영화":1,"_id":0} )
for doc in docs:
    print(doc)


5. 필드값 범위로 출력 : 논리연산자 사용하기(and, or)

  • AND조건 : 흥행지수가 10000 이상이고, 출연영화가 신세계인 배우들을 모두 찾아 배우이름과 출연영화 출력

✍🏻 python

import pymongo 
# mongodb connection
conn = pymongo.MongoClient() # pymongo로 mongodb 연결(localhost:27017)
actor_db = conn.cine21 
actor_collection = actor_db.actor_collection
docs = actor_collection.find( { '흥행지수':{'$gte':10000}, '출연영화':'신세계' }, {'배우이름':1,'출연영화':1,'_id':0} )
for doc in docs:
    print(doc)

  • OR 조건 : 신세계 또는 극한직업에 출연한 배우를 모두 찾아 이름만 출력
  • OR 조건은 list로 묶음 { '$or': [{'key':'value'}, {'key':'value'}....] }

✍🏻 python

import pymongo 
# mongodb connection
conn = pymongo.MongoClient() # pymongo로 mongodb 연결(localhost:27017)
actor_db = conn.cine21 
actor_collection = actor_db.actor_collection
docs = actor_collection.find( { '$or': [{'출연영화':'신세계'}, {'출연영화':'사바하'}] }, {'배우이름':1,'_id':0} )
for doc in docs:
    print(doc)


profile
Keep Going, Keep Coding!

0개의 댓글