MongoDB 기초

highway92·2021년 10월 5일
0

MongoDB

목록 보기
1/3

1. MongoDb의 구조

BSON

BSON은 몽고 db에서 데이터를 저장하는 구조인데 JSON과 거의 유사한 형태를 띄고 있다.

{"name":"kim",
    "age":20,
    "status":"A"
    "groups":["baseball","music"]
}

Pymongo

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!!!'}]

2. 도큐먼트 생성

insert_one

result = collection.insert_one({document})

하나의 도큐먼트 객체를 넘긴다.

insert_many

result = collection.insert_many([{document},{document} ... ])

다수의 도큐먼트 객체를 넘긴다.

3. 도큐먼트 검색 기초

find

# result = collection.find({query},{projection}) 와 같은 형태이다.

query = {"username":"kim"}

projection = {"password":False}

result = collection.find(query, projection)

print(list(result))

query는 어떤 데이터를 찾고싶어하는지에 대한 조건문이고
projection은 그 field를 보여줄지 말지를 알려준다. (projection의 boolean 값은 모두 같은 값이어야 한다.)

update_one

result = collection.update_one({query},{"$set":{update}},upsert:Boolean)

# 찾은 도큐먼트 수
print(result.matched_count)

# 변경된 도큐먼트 수
print(result.modified_count)

query로 검색하고, update에 변경할 사항을 적는다.

update_many


result = collection.update_many({query},{"$set":{update}},upsert:Boolean)

# 찾은 도큐먼트 수
print(result.matched_count)

# 변경된 도큐먼트 수
print(result.modified_count)

update_one과 형태는 같다.
보통 query문에 정규표현식이 많이 사용된다.

update 예시


query = {"item":"canvas"}
update = {"$set" : {"price" : 5000}}

result = collection.update_one(query,update,upsert:False)
# upsert는 찾은 결과가 없으면 만들지 말지를 결정한다.

delete_one, delete_many

query = {"name":"kim"}
result = colection.delete_one(query)

print(result.deleted_count
profile
웹 개발자로 활동하고 있습니다.

0개의 댓글