01.MongoDB 기초 - Pymongo 정리-2

ID짱재·2021년 2월 27일
0

MongoDB

목록 보기
7/8
post-thumbnail

🌈 Pymongo 문법 정리

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

🔥 포함여부로 출력 : in 과 nin

🔥 skip()과 limit()

🔥 리스트(list) 형태의 value값을 대상으로 검색

🔥 정규 표현식으로 부분 문자열 검색


6. 필드값 범위로 출력 : 논리연산자 사용하기(nor)

  • nor 는 not or 의 줄임말로 둘다 아닌 것을 뜻하게 됨.
  • 🔍 흥행지수가 10000보다 크지 않은 것과 1000보다 작지 않는 것(10000이하, 1000이상)
    • { '$nor': [{'흥행지수': {'$gt':10000}}, {'흥행지수': {"$lt":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( { '$nor': [{'흥행지수': {'$gt':10000}}, {'흥행지수': {"$lt":1000}}] }, {'배우이름':1,'흥행지수':1,'_id':0} )
for doc in docs:
    print(doc)


7. 해당 value 유무에 따른 document 출력 : in 과 nin

  • in : 포함되있다(들어가 있는 것)
  • 🔍 흥행지수가 5674, 9702, 5463 이 포함된 것
    • { '흥행지수' : {"$in" : [5674, 9702, 5463]}}

✍🏻 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({ '흥행지수' : {"$in" : [5674, 9702, 5463]}}, {'배우이름':1,'흥행지수':1,'_id':0} )
for doc in docs:
    print(doc)

  • nin : 제외되있다(들어가지 않은 것)
  • 🔍 흥행지수가 5674, 9702, 5463 이 포함된 것
    • { '흥행지수' : {"$in" : [5674, 9702, 5463]}}

✍🏻 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({ '흥행지수' : {"$nin" : [5674, 9702, 5463]}}, {'배우이름':1,'흥행지수':1,'_id':0} ).limit(10)
for doc in docs:
    print(doc)

  • 🔍 흥행지수가 9182, 8439가 아니고, 10000 이하인 데이터를 3개만 검색해보기(배우이름과 흥행지수만 출력)

✍🏻 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({ '$nor': [{'흥행지수': {'$gt':10000}}, {'흥행지수': {"nin":[ 9182, 8439 ]}}] }, {'배우이름':1,'흥행지수':1,'_id':0} ).limit(3)
for doc in docs:
    print(doc)

8. skip()과 limit()

  • limit(n) : 검색결과를 n개만 표시

✍🏻 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}}).limit(10)
for doc in docs:
    print(doc)

  • skip(n) : 검색결과를 n만큼 건너 띔
  • "limit(10).skip(5)"은 해당 조건에 일치하는 document를 5개씩 건너띄면서 총 10개를 출력한다는 의미

✍🏻 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}}).limit(10).skip(5)
for doc in docs:
    print(doc)


9. 리스트(list) 형태의 value값을 대상으로 검색

  • list로 된 value 값을 검색할 때, '$all' 통해 조건에 해당하는 모든 값을 찾을 수 있음
  • '$all'은 순서에 상관없이 그 요소를 포함하고 있는 모든 documnet를 반환함
  • 리스트로된 key('출연영화')에 '신세계'와 '사하바'가 모두 포함된 document를 전부 출력

✍🏻 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({'출연영화':{'$all':['신세계', '사바하']}})
for doc in docs:
    print(doc)

  • key값에 .[index번호]를 통해 인덱스를 기준으로 해당되는 데이터값을 찾을 수 있음
  • 리스트로된 '출연영화' key에 2번째 요소가 '신세계'인 모든 document를 출력하라

✍🏻 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({'출연영화.1':'신세계'})
for doc in docs:
    print(doc)

  • 리스트로된 key값의 size를 통해서도 검색할 수 있음
  • '흥행영화'가 5개 이상인 documents만 출력

✍🏻 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({'출연영화':{'$size':5}})
for doc in docs:
    print(doc)


10. 정규 표현식으로 부분 문자열 검색

  • 정규표현식 '$regex'을 이용해서 텍스트 일부를 검색 조건으로하여 일치하는 것을 검색 가능
  • find({'필드명' : {'$regex': '검색어'}})
  • 🔍 출연영화에서 '다만'이라는 text를 포함한 documents를 모두 출력

✍🏻 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({'출연영화':{'$regex':'다만'}})
for doc in docs:
    print(doc)

profile
Keep Going, Keep Coding!

0개의 댓글