SOCO
Pymongo 본문
파이썬으로 몽고db제어하기
1. pymongo 라이브러리를 설치해야함
터미널에서
pip3 install pymongo
=> Successfully installed pymongo-3.11.4
2. pymongo라이브러리 import : import pymongo
3. 로컬pc에 있는 Monogodb에 접속하기
처음에 pymongo를 설치하고 Import한 다음 mongodb서버에 접속해야함 : MongoClinet()
import pymongo
connection = pymongo.MongoClient() #주소를 입력하지 않는 경우 로컬pc에 연결됨(default : 27017)
cf. 로보 3T를 사용하는 경우 몽고db가 있는 주소를 적어줬음
4. database, collection를 생성 또는 선택할 수 있게 하는 기능
잊지말자 : database > collection > document( JSON ; key : value)
1)원하는 데이터베이스 생성 또는 선택
#방법1
db =connection.test #database를 의미하는 변수명 = mongodb와 연결한 변수명.database_name
#방법2
db = connection["test"]
#Robo 3T에서 use database_name 과 동일 => 이 경우 db는 해당 database를 의미하게 됨
2)원하는 collection 생성 또는 선택
#방법1
knowledge_it = knowledge.it #collection을 의미하는 변수명 =database변수명.collection_name
#방법2
knowledge_it = knowledge["it"]
데이터를 넣기 전까는 실제로 저장공간이 만들어지지는 않음
데이터를 넣으면 robo 3T에서도 확인할 수 있음
5. 해당 database의 collection에 CRUD명령을 어떻게 할 수 있는지
1)Create
(1) mongodb shell명령어(robo 3T에서 사용)
: insertOne({key:value, key:value, key:value}) / insertMany()
#insertOne()
db.collection_name.insertOne( //database_name.collection_name.insertOne
{key : "value",
key : "value",
key : "value"}
)
#inserMany
db.collection_name.insertMany(
[
{key:"value", key:"value"},
{key:"value", key:"value"},
{key:"value", key:"value"}
]
)
(2)pymongo 라이브러리에서 제공하는 함수
: insert_one({key:value, key:value, key:value) / insert_many()
#1단계 : 라이브러리 import
import pymongo
#2단계 : pymongo라이브러리에서 MongoClient함수를 통해 로컬pc와 연결
connection = pymongo.MongoClient()
#3단계 : db_name이라는 database를 만듦 ->이제 db_name은 db로 사용할 수 있음(변수설정)
db = connection.db_name
#4단계 : collection_name이라는 collection을 만듦
collection = db.collection_name
#5단계 : create
collection.insert_one({"key":"value", "key":"value", "key":"value"})
collection.insert_many(
[
{"key":"value", "key":"value"},
{"key":"value", "key":"value"},
{"key":"value", "key":"value"}
]
)
#풀어쓰면 다음과 같다
#pymongo.MongoClient().db_name.collection_name.insert_one()
**주의 : key값도 ""붙여야함. ""안 붙이면 변수로 인식해서 에러날 수 있음
참고 : RDBMS의 primary_key에 해당하는 _id의 값을 알고 싶은 경우 : document마다 부여됨
document = collection.insert_one({"key":"value"})
print(document.inserted_id)
참고 : collection에 있는 document 개수를 알고 싶은 경우
collection.estimated_document_count()
json포맷 = python에서 딕셔너리임
insert_many의 경우 여러개의 딕셔너리로 구성된 리스트(JSON)를 통해 넣는 것이다!
2) Read
(1)mongodb shell명령어(robo 3T에서 사용)
: findOne() -> document 1개 / find() ->document 여러개
(2)pymongo 라이브러리에서 제공하는 함수
: find_one() -> 1개 / find({조건}, {보여줄 field/key}) -> 여러개 (결과가 리스트변수로 넘어옴)
document = collection.find() #여러개를 찾는 경우 리스트변수로 넘어옴
for doc in document :
print(doc)
document = collection.find({"key" : "value"}) # 조건에 맞는 doucument를 print
for doc in document :
print(doc)
참고 : collection에 있는 "조건에 맞는" document 개수를 알고 싶은 경우
collection.count_documents({"key":"value"})
참고 : collection에 있는 "조건에 맞는" document 개수를 알고 싶은 경우
for post in collection.find().sort("key") : #collection에 있는 document를 찾아서(리스트) key값의 value를 기준으로 정렬한 다음 print
print(post)
3)Update
(1)mongodb shell명령어(robo 3T에서 사용)
: updateOne() -> document 1개 / updateMany() ->document 여러개
db.collection_name.updateMany(
{key : "value"}, # 조건
{$set : {key : "value"} # 어떤 field의 내용을 어떻게 바꿀지
)
(2)pymongo 라이브러리에서 제공하는 함수
: update_one() -> 1개의 다큐먼트 / update_many() -> 여러개의 다큐먼트
collection.update_one({조건}, {업데이트 할 내용})
collection.update_one(
{"key":"value"}, # document찾는 조건
{"$set" : { "key" : "value"}} # 해당 document의 어떤 field(key)를 어떻게 바꿀지
)
본래의 다큐멘트에 있는 특정 key에 대한 값을 수정하는 것도 가능하고
해당 다큐멘트에 추가적인 key : value를 넣는 것도 가능함
*참고 : create는 document자체를 만드는 것이고 update는 document안에 있는 data(key : value)를 바꾸는 것이다
4) Delete
(1)mongodb shell명령어(robo 3T에서 사용)
: deleteOne() -> document 1개 / deleteMany() ->document 여러개
(2)pymongo 라이브러리에서 제공하는 함수
: delete_one() -> 1개의 다큐먼트 / delete_many() -> 여러개의 다큐먼트
collection.delete_many(
{"key" : "value"} #조건
)
참고 : 비교문법
#MongoDB shell
{ key : {$gte : 6} }
#Python
{ "key" : {"$gte" : 6} }
강의 : NoSQL DB (몽고DB/mongodb) 기본부터 파이썬/데이터분석 활용까지!
'데이터베이스 > NOSQL' 카테고리의 다른 글
Mac 환경에서 homebrew이용해서 mongodb 설치하기 (0) | 2021.07.07 |
---|