BSON은 몽고 db에서 데이터를 저장하는 구조인데 JSON과 거의 유사한 형태를 띄고 있다.
{"name":"kim",
"age":20,
"status":"A"
"groups":["baseball","music"]
}
pymongo는 파이썬을 사용하여 mongoDB를 사용할 수 있게 도와주는 파이썬 모듈이다.
import pymongo
# mongodb와 연결하는 코드 (27017은 몽고db 기본 포트넘버이다.)
connection = pymongo.MongoClient("mongodb://localhost:27017/")
# 사용할 DB에 연결하는 코드
# 만약 데이터베이스가 없다면 자동으로 생성한 후 접속한다.
db = connection.get_database("testDB")
# 컬렉션에 도큐먼트를 저장하는 코드
collection = db.get_collection("testCollection")
collection.insert_one({"hello":"World!!!"})
다음은 조회를 위한 코드이다.
# 데이터베이스 목록 조회
print(connection.list_database_names())
# 결과 (admin,config,local은 기본 db들이다.)
['admin','config','local','testDB']
# 컬렉션 목록 조회
print(db.list_collection_names())
# 결과
['testCollection']
# pprint(pretty print)로 도큐먼트 목록 조회
pprint(list(collection.find()))
# 결과
[{'_id' : ObjectId('.......'), 'hello':'World!!!'}]
result = collection.insert_one({document})
하나의 도큐먼트 객체를 넘긴다.
result = collection.insert_many([{document},{document} ... ])
다수의 도큐먼트 객체를 넘긴다.
# result = collection.find({query},{projection}) 와 같은 형태이다.
query = {"username":"kim"}
projection = {"password":False}
result = collection.find(query, projection)
print(list(result))
query는 어떤 데이터를 찾고싶어하는지에 대한 조건문이고
projection은 그 field를 보여줄지 말지를 알려준다. (projection의 boolean 값은 모두 같은 값이어야 한다.)
result = collection.update_one({query},{"$set":{update}},upsert:Boolean)
# 찾은 도큐먼트 수
print(result.matched_count)
# 변경된 도큐먼트 수
print(result.modified_count)
query로 검색하고, update에 변경할 사항을 적는다.
result = collection.update_many({query},{"$set":{update}},upsert:Boolean)
# 찾은 도큐먼트 수
print(result.matched_count)
# 변경된 도큐먼트 수
print(result.modified_count)
update_one과 형태는 같다.
보통 query문에 정규표현식이 많이 사용된다.
query = {"item":"canvas"}
update = {"$set" : {"price" : 5000}}
result = collection.update_one(query,update,upsert:False)
# upsert는 찾은 결과가 없으면 만들지 말지를 결정한다.
query = {"name":"kim"}
result = colection.delete_one(query)
print(result.deleted_count