본문으로 바로가기
 

mongodb/mongo-python-driver

PyMongo - the Python driver for MongoDB. Contribute to mongodb/mongo-python-driver development by creating an account on GitHub.

github.com

 

 

 

 

설치

 

jupyter notebook에 설치 후 실습해보도록하자. 

(https://jakevdp.github.io/blog/2017/12/05/installing-python-packages-from-jupyter/)

import sys
!{sys.executable} -m pip install pymongo

 

connect

 

아무것도 적지 않으면 로컬로 연결됩니다. 저는 몽고DB를 설치한 EC2에 연결해보았습니다. EIP를 붙인 EC2에 mongodb://[ip 주소], PORT를 적어주면 됩니다.

import pymongo

# mongoDB 연결
connection = pymongo.MongoClient('mongodb://3.34.9.105', 27017)

 

참고로 mongoose(JS 기반)를 사용 중이면 그냥

mongoose.connect("mongodb://localhost:27017", {config})...

로 설정해주면 된다. 

 

 

 

 

db, 컬렉션 생성 후 데이터 삽입

 

# test라는 이름으로 db 생성 (db는 변수명일 뿐임)
db = connection.knowledge

# it라는 이름으로 컬렉션 생성
knowledge_it = db.it

# insert_one을 통해 컬렉션에 도큐먼트 추가
post = {"author": "Mike", "text": "My first blog post!", "tags": ["mongodb", "python", "pymongo"] }
knowledge_it.insert_one(post)

삽입 후 ROBO-3T에서 확인 가능

mongoose에서도 그랬었지만, mongoDB Shell과 비슷하면서도 다른 메서드를 사용한다. 

또, 한가지 주의점은, mongo Shell에서는 insertOne을 할 때 key 값에 따옴표를 붙일 필요 없었지만

pymongo에서는 무조건 따옴표를 붙여야 한다.  (안 그러면 변수를 쓸 수 없게 되니까. 당연한 사항이다.)

 

 

 

CRUD 

 

C : insert_one, insert_many

R : find_one, find

U : update_one, update_many

D : delete_one, delete_many

 

 

위의 예시를 그대로 이어받아 pymongo에서의 CRUD 명령어를 알아보자.

 

insert_one(), insert_many()

output = knowledge_it.insert_one({"author": "Martin", "text": "Cinema is dead"})

# 여러 도큐먼트를 넣어줄 때는 []로 감싸줘서 리스트로 전달해야 함
knowledge_it.insert_many(
    [
        {"author": "Darren", "text": "Who are you?"},
        {"author": "Trevor", "text": "Don't fuck with me"},
    ]
)
# 특정 명령에 변수를 할당하여 _id 확인 등 가능
output.inserted_id

# 해당 컬렉션에 몇개의 도큐먼트가 있는지 확인
knowledge_it.count_documents({})

 

 

find_one, find

# 첫번째 도큐먼트 가져오기
knowledge_it.find_one()

# 조건에 부합하는 도큐먼트 중 처음 발견되는 것 가져오기
martin = knowledge_it.find_one( {"author":"Martin"} )

# 해당 컬렉션의 모든 도큐먼트를 가져오기
docs = knowledge_it.find()
for doc in docs:
    doc
    
# 특정 조건을 만족하는 모든 도큐먼트 가져오기
Trevor = knowledge_it.find({"author": "Trevor"})
for i in Trevor:
    i

    
# 조건에 부합하는 도큐먼트의 갯수 확인하기    
knowledge_it.count_documents({"author": "Trevor"})

# sort하여 가져오기. 값이 없으면 가장 낮은 것으로 인식함.
for post in knowledge_it.find().sort("age"):
    post

 

update_one, update_many

 

주의할 점은 $set나 조건 또한 ""로 감싸줘야 한다는 것입니다.

# 조건에 만족하는 첫 도큐먼트를 update(변경)
knowledge_it.update_one({"author": "Darren"}, {"$set": {"text": 'Do not use drug. seriously.'}})

# 조건에 만족하는 모든 도큐먼트 변경
knowledge_it.update_many({"name": "david"}, {"$set": {"age": 355}})

 

delete_one, delete_many

 

# 조건에 맞는 도큐먼트 중 첫번째 발견되는 도큐먼트를 삭제합니다.
knowledge_it.delete_one({"name": "bob"})

# 조건에 맞는 모든 도큐먼트를 삭제합니다.
knowledge_it.delete_many({"age": { "$gt" : 30}})

 

 

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체